我是R的初学者,我想基于ID列将两个数据集合并在一起。如果数据集2的ID号存在于数据集1中,那么我希望将来自数据集2的该特定行的数据添加到数据集1的行中。根据条件合并r中的数据并创建新列
其次,如果有匹配,我想把新列中的“1”称为匹配该特定行/匹配的匹配,如果不匹配则匹配“0”。
例子:
Dataset 1:
Id category
123 3
124 1
125 2
Dataset 2:
Id score category
123 0.24 3
124 0.83 1
126 0.92 2
与添加的列最后一个例子:
Id score category match
123 0.24 3 1
124 0.83 1 1
125 NA 1 0
126 0.92 2 1
我这个到目前为止已经试过(和其他一些组合),但是这并没有给我很好的效果:
data <- merge(df1, df2, by ="ID" , all.x = TRUE)
我真的很感谢任何帮助!
重复性代码:
df1 <- data.frame(ID=c("123","124","125"), category=c(3,1,2)
df2 <- data.frame(ID=c("123","124","126"), score=("0.24","0.83","0.92"), category=c("3","1","2")
更新输出你有一个'character' NA?它不应该放在引号中。显示的输入数据和可重现示例中的'df2'不匹配。要创建二进制列,只需在'as.integer'中使用'%in%' – akrun
您的示例数据与预期的输出和可重复的代码不一样。你没有ID'126'? – user5249203
[如何加入(合并)数据帧(内部,外部,左侧,右侧)?](http://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames-inner -outer-left-right) –