从R中的三个现有变量创建新变量

时间:2012-02-03 21:56:05

标签: r variables creation

我有一个类似于下面的数据集,我想基于这些变量创建一个新变量,它可以与数据集中的其他变量一起使用。

第一个变量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:

  • 如果值= 1,2或3
  • ,则使用Var1_v1中的值
  • 如果值= 1,2或3
  • ,则使用Var1_v2中的值 如果值= 1,2或3 ,
  • 使用Var2中的值

此变量应该能够与ID号匹配,以便可以在数据集中使用。

因此最终变量应如下所示:

 Var3 <- (2,2,3,1,3,2,3,3,1,3,2)

谢谢!

1 个答案:

答案 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向量)并只填写匹配的部分。