我有两个数据集,第一个数据集(DF1)是一个治疗组,有ID,var1,var2,结果四个变量。一个人的ID和结果是一样的。但是var1和var2正在改变。请注意,每个人都有不同的行号。像ID1有3行一样,ID2只有2行。
ID var1 var2 result
1 30 2013-11-23 2014-06-26
1 30 2013-12-23 2014-06-26
1 30 2014-1-23 2014-06-26
2 60 2013-10-06 2014-05-10
2 30 2014-01-6 2014-05-10
第二个数据集(DF2)具有和ID、var1、var2相同的变量。但它没有结果。
ID var1 var2
a 30 2013-10-23
a 30 2013-11-23
a 30 2014-12-23
b 60 2013-10-06
b 30 2014-01-06
b 30 2014-02-03
我的问题是,我可以用什么样的方法来给DF2中的每个人一个基于var1的结果,var2与DF1的比较?我认为DF1中的人可能不可能拥有与DF2完全相同的var 1和var 2。
非常感谢您提前提供的帮助!
您是否试图在DF1
和DF2
中匹配var1
和var2
,然后根据匹配的位置将result
分配给DF2?如果是这样,这将起作用:
DF2$result <- NA
DF2[which((DF2$var1 %in% DF1$var1) & (DF2$var2 %in% DF1$var2)),'result'] <- DF1[which((DF1$var1 %in% DF2$var1) & (DF1$var2 %in% DF2$var2)),'result']
您需要确保var1
、var2
和result
不是factor
变量,否则可能会给出错误的结果。如果需要它们是factor
,请先将它们转换为numeric
或character
,然后在运行上述脚本后再转换回factor
。