在r中连接两个数据集

时间:2016-05-19 18:40:05

标签: r rbind

我有两个数据集动物和植物

ANIMAL                            PLANT

OBS  Common  Animal  Number       OBS  Common  Plant     Number

1     a     Ant       5           1     g     Grape       69
2     b     Bird                  2     h     Hazelnut    55
3     c     Cat      17           3     i     Indigo   
4     d     Dog       9           4     j     Jicama      14 
5     e     Eagle                 5     k     Kale         5
6     f     Frog     76           6     l     Lentil      77

我想将这两个连接成一个新的数据集。

以下是所需的输出

Obs    Common    Animal    Plant       Number
1      a       Ant                      5  
2      b       Bird                     .  
3      c       Cat                     17  
4      d       Dog                      9  
5      e       Eagle                    .  
6      f       Frog                    76  
7      g                 Grape         69  
8      h                 Hazelnut      55  
9      i                 Indigo         .  
10      j                 Jicama        14  
11      k                 Kale           5  
12      l                 Lentil        77 

如何在R中进行这种连接?

2 个答案:

答案 0 :(得分:1)

rbind()因名称不同而无效。

这样的东西适用于给定的例子:

rbind_ <- funciton(data1, data2) {
  nms1 <- names(data1)
  nms2 <- names(data2)
  if(mean(nms1==nms2)==1) {
    out <- rbind(data1, data2) 
  } else {
    data1[nms2[!nms2%in%nms1]] <- NA
    data2[nms1[!nms1%in%nms2]] <- NA
    out <- rbind(data1, data2)
  }
  return(out)
}

rbind_(动物,植物)

   OBS Common Animal Number    Plant
1    1      a    Ant      5     <NA>
2    2      b   Bird     NA     <NA>
3    3      c    Cat     17     <NA>
4    4      d    Dog      9     <NA>
5    5      e  Eagle     NA     <NA>
6    6      f   Frog     76     <NA>
7    1      g   <NA>     69    Grape
8    2      h   <NA>     55 Hazelnut
9    3      i   <NA>     NA   Indigo
10   4      j   <NA>     14   Jicama
11   5      k   <NA>      5     Kale
12   6      l   <NA>     77   Lentil

但我认为,在所有情况下都需要进行一些调整才能开始工作。

答案 1 :(得分:0)

这可以为您提供所需的输出:

   PLANT$OBS = PLANT$OBS + nrow(ANIMAL)
   ANIMAL$Plant = ''
   PLANT$Animal = ''
   Final_DF= rbind(ANIMAL,PLANT)