合并不等行数的数据帧

时间:2013-04-12 18:20:22

标签: r merge dataframe

我想从数据帧df1和df2创建一个新的数据帧df3。数据框包含zipcodes和状态。一个数据框具有比另一个更多的邮政编码。我希望将它们组合起来并为没有其他文件中相应Zip代码值的Zipcodes添加NA。

df3  
ZIP STATE   Total2 Total1  
36541   AL  6747   11190  
36542   AL  8093   10647  
36549   AL  9404   NA  
36551   AL  7048   10656  
36561   AL  5104   5044  
.
.
.


df1  
ZIP STATE   Total1  
36541   AL  11190  
36542   AL  10647  
36551   AL  10656  
36561   AL  5044  
32314   FL  10624  
32320   FL  5705  
32322   FL  11457  
32324   FL  5926  
32508   FL  8885  
32511   FL  9428  
32514   FL  6168  
32526   FL  11998  
32533   FL  11188  
32534   FL  11188  


df2  
ZIP STATE   Total2  
36541   AL  6747  
36542   AL  8093  
36549   AL  9404  
36551   AL  7048  
36561   AL  5104  
32314   FL  8959  
32320   FL  9237  
32321   FL  11417  
32322   FL  5467  
32324   FL  6672  
32508   FL  6085  
32511   FL  8782  
32514   FL  11297  
32522   FL  6892  
32526   FL  9497  
32533   FL  9114  
32534   FL  8594  

2 个答案:

答案 0 :(得分:3)

merge()应该这样做:

merge(df1, df2, all=T)

答案 1 :(得分:1)

来自rbind.fill包的

plyr可能就是您要找的内容:

  > plyr::rbind.fill(df1, df3, df2)
       ZIP STATE Total1 Total2
  1  36541    AL  11190     NA
  2  36542    AL  10647     NA
  3  36551    AL  10656     NA
  4  36561    AL   5044     NA
  5  32314    FL  10624     NA
  6  32320    FL   5705     NA
  7  32322    FL  11457     NA
  8  32324    FL   5926     NA
  9  32508    FL   8885     NA
  10 32511    FL   9428     NA
  11 32514    FL   6168     NA
  12 32526    FL  11998     NA
  13 32533    FL  11188     NA
  14 32534    FL  11188     NA
  15 36541    AL  11190   6747
  16 36542    AL  10647   8093
  17 36549    AL     NA   9404
  18 36551    AL  10656   7048
  19 36561    AL   5044   5104
  20 36541    AL     NA   6747
  21 36542    AL     NA   8093
  22 36549    AL     NA   9404
  23 36551    AL     NA   7048
  24 36561    AL     NA   5104
  25 32314    FL     NA   8959
  26 32320    FL     NA   9237
  27 32321    FL     NA  11417
  28 32322    FL     NA   5467
  29 32324    FL     NA   6672
  30 32508    FL     NA   6085
  31 32511    FL     NA   8782
  32 32514    FL     NA  11297
  33 32522    FL     NA   6892
  34 32526    FL     NA   9497
  35 32533    FL     NA   9114
  36 32534    FL     NA   8594