对于我的生活,我无法在线找到我试图执行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}
产生相同的错误。
关于我失踪的建议?
谢谢!
答案 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))