2013-04-12 4 views
2

Я хочу создать новый фрейм данных df3 из фреймов данных df1 и df2. Кадры данных содержат zipcodes и состояния. Один фрейм данных имеет больше zip-кодов, чем другой. Я хочу объединить их и добавить NA для Zipcodes, которые не имеют значения для соответствующего Zip-кода в другом файле.Объединить кадры данных с неравным числом строк

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 

ответ

3

merge() должны это сделать:

merge(df1, df2, all=T)

+0

Я считаю, что это один сливает строки и не колонны. Должно закончиться с 4 столбцами. как показано в df3 –

+2

Вы пробовали? – Rcoster

+0

@JohnnyLiseth, вам требуется меньше времени, чтобы скопировать + вставить это решение (подтверждая, что оно фактически дает вам именно то, что вы описываете), чем для каждого человека, отвечающего на ваш вопрос, для копирования и вставки ваших данных образца, не говоря уже о типе ответ для вас. Самое меньшее, что вы могли бы сделать, это на самом деле ** _ try _ ** решение, данное перед выражением сомнений в том, что оно не работает. Затем - и только тогда - вы можете указать, что конкретно * о решении не соответствует вашему вопросу. –

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 
+0

Могу ли я четко заявить о своей проблеме. Я хочу объединить df1 и df2 для создания df3. –

+0

В этом случае вы ищете решение, которое @Rcoster дал вам –

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