2015-02-04 4 views
3

Здравствуйте, я искал решение в течение некоторого времени. Я уверен, что ответ прост, но я потянул сюда свои волосы!Слияние кадров данных с разной длиной строки в R

У меня есть два кадра данных, которые похожи (на самом деле один представляет собой более полный набор данных). Оба они имеют два столбца, один из которых содержит строковые значения в качестве фактора и один содержит числовые значения.

df.A выглядит следующим образом:

Category  Number 
A   1 
B   2 
C   3 
D   4 

и df.B выглядит следующим образом

Category  Number 
A   5 
B   6 
C   7 

Эти категории (ABCD) являются общими между двумя dataframes. Пытаясь получить df.B иметь категорию D с NA или 0 значение (я работаю с процентами, так как NA или 0 отлично), мой код выглядит следующим образом:

proto <- df.A 
proto$number <- NULL 
df.B <- rbind.fill(proto,df.B) 

Моя мысль заключается в следующем бы добавить четвертую строку для категории D и дают значения, но ожидается вместо результатов в

Category  Number 
A    NA 
B    NA 
C    NA 
D    NA 
NA   5 
NA   6 
NA   7 

Я попытался удалить класс фактора из категории на обоих df.A и df.B, пытался использовать rbind.fill.matrix вместо этого. Честно говоря, я довольно новичок в R, и это дает мне массу проблем. Как мне получить R, чтобы распознать, что ABCD является одним и тем же фактором во всех кадрах данных?

+5

Вы должны 'слияния (df.A, df.B, от =» Категория», все = T)'. По иронии судьбы, у вас уже есть слово «merge» в названии вашего вопроса :) –

+1

@MaratTalipov, который, казалось, исправился! Спасибо – Andrew

+0

@DavidArenburg Я предполагаю, что новички, как я, пытаются перейти к более сложному решению, прежде чем пытаться пробовать вещи ... Наверное, мне есть чему поучиться: P – Andrew

ответ

3

Вы можете достичь желаемого результата с помощью merge:

merge(df.A,df.B,by='Category',all=T) 

, который будет производить следующий вывод:

# Category Number.x Number.y 
#1  A  1  5 
#2  B  2  6 
#3  C  3  7 
#4  D  4  NA 
Смежные вопросы