我有这个数据帧(mydf1
),其中重复序列号(在串行列中)。我想根据这些序列出现在mydf1中的计数数量来复制另一个数据帧(mydf2
)中的行并获取result
表。谢谢您的帮助!
mydf1
serial var1 var2
122 a d
222 b e
321 c f
321 fd fs
222 bx eg
mydf2
serial varA varB
122 an ddf
222 cb edf
321 ff ffg
result
serial varA varB
122 an ddf
222 cb edf
222 cb edf
321 ff ffg
321 ff ffg
答案 0 :(得分:4)
如果我很棘手,请使用行索引:
`rownames<-`(mydf2,mydf2$serial)[sort(as.character(mydf1$serial)),]
# serial varA varB
#122 122 an ddf
#222 222 cb edf
#222.1 222 cb edf
#321 321 ff ffg
#321.1 321 ff ffg
两步结果相同:
rownames(mydf2) <- mydf2$serial
mydf2[sort(as.character(mydf1$serial)),]
如果您想避免在NA
中为不匹配的案例设置任何mydf1
值,请将调用的中间部分更改为:
as.character(mydf1$serial %in% mydf2$serial)
答案 1 :(得分:4)
另一种选择:
mydf2[match(mydf1$serial, mydf2$serial), ]
对于包含mydf1
的不同或附加值的mydf2
,这应该是健壮的。