这是一些示例数据。
vv var1 var2
1 a 1/1/2010
1 c 1/3/2010
2 d 1/6/2010
3 a 1/8/2010
3 c 1/9/2010
4 a 1/10/2010
4 b 1/11/2010
5 d 1/13/2010
6 a 1/16/2010
6 b 1/17/2010
7 a 1/19/2010
7 b 1/20/2010
8 d 1/22/2010
9 a 1/25/2010
9 c 1/27/2010
我正在尝试创建由其他变量的响应填充的新变量。我认为这很容易。例如,我尝试了类似下面的方法。
data$new1[data$var1=="a"]<-data$var2
#or
data$new1[data$var1=="b" | data$var1=="c"]<-data$var2
我得到错误number of items to replace is not of replacement length
。在我的数据中,并不是每个var1=="a"
都有一个var2
值,所以我不确定为什么 r 不只是为缺失值分配 NA,这是我可以接受的(实际上更喜欢它)。基本上,我希望 r 给new1
任何 NA 值var1!="a"
。
我也试过
if (data$var1=="a") {data$new1<-data$var2} else {data$new1<-"NA"}
但我得到了错误the condition has length > 1 and only the first element will be used
。
现在,我想我可以将我的数据子集化为只有 的数据var1=="a"
,然后分配我的值,然后只需合并回主数据集,并all=T
选择获得 NA 的估算值,但我真的想避免这样做。
我不确定问题是什么。非常感谢任何建议。干杯。
以下方法的输出用于运行代码:
data$new1 <- ifelse(data$var1 %in% c("b","c"),data$var2,NA)
vv var1 var2 new1
1 1 a 1/1/2010 NA
2 1 c 1/3/2010 12
3 2 d 1/6/2010 NA
4 3 a 1/8/2010 NA
5 3 c 1/9/2010 15
6 4 a 1/10/2010 NA
7 4 b 1/11/2010 3
8 5 d 1/13/2010 NA
9 6 a 1/16/2010 NA
10 6 b 1/17/2010 6
11 7 a 1/19/2010 NA
12 7 b 1/20/2010 8
13 8 d 1/22/2010 NA
14 9 a 1/25/2010 NA
15 9 c 1/27/2010 11