2016-05-19 5 views
0

У меня есть два набора данных животных и растенийСоединить два набора данных в г

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?

+0

try 'rbind' commad – Bulat

+1

'rbindlist (список (ЖИВОТНЫЙ, ЗАВОД), fill = T)' будет делать то, что близко к желаемому результату. – Psidom

+0

было бы легче найти ответ (и для вас его получить), если ваш пример был [воспроизводимым] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r -reproducible-пример/5963610 # 5963610) –

ответ

0

Это должно дать вам желаемый результат:

PLANT$OBS = PLANT$OBS + nrow(ANIMAL) 
    ANIMAL$Plant = '' 
    PLANT$Animal = '' 
    Final_DF= rbind(ANIMAL,PLANT) 
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 

Но требует небольшой настройки, чтобы работать во всех случаях, я думать.

Смежные вопросы