【问题标题】:Changing value based on a condition in r根据 r 中的条件更改值
【发布时间】:2015-06-29 20:57:03
【问题描述】:

我有以下数据框

head(data)
      Date Avg.Join.Delay Min.Join.Dely Max.Join.Dely    ACCOUNT STB_TYPE  MARKET
1 6/5/2015            500           500           500 3036831961  IPH8005  Denver
2 6/5/2015            500           500           500 3038416736  IPH8005  Denver
3 6/5/2015            500           500           500 4802192190  IPH8005 Phoenix
4 6/5/2015            500           500           500 4802193088  IPH8005 Phoenix
5 6/5/2015            500           500           500 4802795632  IPH8005 Phoenix
6 6/5/2015            500           500           500 4803611713  IPH8005 Phoenix

我想将帐号更改为城市/州 (303 = Colorado),但我不确定这种脚本的正确语法是什么。

我尝试了data$ACCOUNT[data$ACCOUNT == "303%"] <- "Colorado",但它并没有改变值。 知道如何以更改所有以xxx 开头的值的方式进行操作吗?

【问题讨论】:

  • 根据显示的示例,有3036831961 而不是"303%"。如果是前3个数字,那么data$ACCOUNT[substr(data$ACCOUNT,1,3)=='303'] <- 'Colorado'
  • 我不知道您为什么认为% 可以用作通配符,但这不是它在 R 中的工作方式。如果它不仅仅是前 3 个字符,您可能会使用正则表达式,并且% 不是正则表达式中的通配符。
  • @akrun 非常感谢!
  • % 是 SQL 中的通配符,我猜这就是 OP 的想法。

标签: regex r dataframe


【解决方案1】:

你可以尝试使用substr提取前3个字符

data$ACCOUNT[substr(data$ACCOUNT,1,3)=='303'] <- 'Colorado'

或使用sub

data$ACCOUNT[sub('(.{3}).*', '\\1',data$ACCOUNT)=='303'] <- 'Colorado'

或grep

data$ACCOUNT[grepl('^303', data$ACCOUNT)] <- 'Colorado'

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多