根据R中的id号复制行

时间:2015-07-02 00:42:20

标签: r

我有这个数据帧(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

2 个答案:

答案 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,这应该是健壮的。