我有一个类似于下面的数据集,我想基于这些变量创建一个新变量,它可以与数据集中的其他变量一起使用。
第一个变量ID是受访者识别号码。 med变量为1和2,表示不同的处理方式。 Var1_v1和Var1_v2有四个实数选项1,2,3或9,这些选项仅供med == 1的人使用。如果med == 2,则NA会出现在Var1中。当med == 1时,Var2接收NA,当med == 2时,Var2的实际值为1-3。
ID <- c(1,2,3,4,5,6,7,8,9,10,11)
med <- c(1,1,1,1,1,1,2,2,2,2,2)
Var1_v1 <- c(2,2,3,9,9,9,NA,NA,NA,NA,NA) #ranges from 1-3, and 9
Var1_v2 <- c(9,9,9,1,3,2,NA,NA,NA,NA,NA) #ranges from 1-3, and 9
Var2 <- c(NA,NA,NA,NA,NA,NA,3,3,1,3,2)
#tables to show you what data looks like relative to med var
table(Var1_v1, med)
table(Var1_v2, med)
table(Var2, med)
我一直在寻找一段时间来找出一个重新编码/新的变量创建代码,但我没有运气。
最终,我想基于三个条件创建一个新变量,比如Var3:
此变量应该能够与ID号匹配,以便可以在数据集中使用。
因此最终变量应如下所示:
Var3 <- (2,2,3,1,3,2,3,3,1,3,2)
谢谢!
答案 0 :(得分:3)
像
这样的东西v <- Var1_v1
v[Var1_v2 %in% 1:3] <- Var1_v2[Var1_v2 %in% 1:3]
v[Var2 %in% 1:3] <- Var2[Var2 %in% 1:3]
v
[1] 2 2 3 1 3 2 3 3 1 3 2
使用其中一个作为基础(您也可以使用纯NA
向量)并只填写匹配的部分。