R"错误:if"中的意外符号

时间:2014-09-30 21:41:56

标签: r

对于我的生活,我无法在线找到我试图执行if声明的基本问题的答案。任何帮助非常感谢。

数据:

Id,mo.year,
123,201102
436,201101
129,201302

(两个变量都是字符)

代码:

if(data$mo.year IN('201101','201102')) {data$year=1}

结果:

Error: unexpected symbol in "if (data$mo.year IN"

if(data$mo.year IN('201201','201202')) {data$year=2}
if(data$mo.year IN('201301','201302')) {data$year=3}

产生相同的错误。

关于我失踪的建议?

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来您只需要ifelse if语句的矢量化版本:

Df <- data.frame(
  Id=c('123','436','129'),
  mo.year=c('201102','201101','201302'),
  stringsAsFactors=FALSE)
##
Df$year <- ifelse(
  Df$mo.year %in% c('201101','201102'),
  1,
  ifelse(
    Df$mo.year %in% c('201201','201202'),
    2,3))
##
> Df
   Id mo.year year
1 123  201102    1
2 436  201101    1
3 129  201302    3

假设您只是使用mo.year列的第四个数字来生成您的值,您还可以执行类似这样的操作,这更简洁:

Df$year <- as.numeric(
  gsub(
    "(201)(\\d)(\\d+)","\\2",Df$mo.year))