我有两个数据集,第一个数据集(DF1)是一个治疗组,有ID,var1,var2,结果有四个变量。 一个人的身份证和结果是相同的。 但是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。
非常感谢您提前提供任何帮助!
答案 0 :(得分:0)
您是否尝试匹配var1
和var2
中的DF1
和DF2
,然后根据匹配位置为DF2分配result
?如果是这样,这将有效:
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
。