2015-02-04 5 views
3

안녕하세요 저는 꽤 오랫동안 해결책을 찾고있었습니다. 그 대답은 쉽지만 여기서 머리카락을 뽑아 냈습니다!다른 행 길이의 데이터 프레임을 병합하여 R

저는 두 개의 데이터 프레임이 비슷합니다 (사실 하나는 완전한 데이터 세트를 나타냅니다). 둘 다 두 개의 열을 가지고 있는데 하나는 요소로 문자열 값을 포함하고 하나는 숫자 값을 포함합니다.

df.A은 다음과 같습니다

Category  Number 
A   1 
B   2 
C   3 
D   4 

및 df.B 이러한 범주 (ABCD)이 두 dataframes 사이에 공통적으로이

Category  Number 
A   5 
B   6 
C   7 

것 같습니다. (NA 또는 0 중 하나가 괜찮 그래서 비율 함께 일하고)는 NA 또는 0 값이 범주 D를 가지고 df.B을 얻으려고 노력에서, 내 코드는 다음과 같습니다

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

내 생각이이다 카테고리 D에 대해 네 번째 행을 추가 NA에게 가치를 제공하는 대신 I는 df.A 및 df.B 모두 카테고리 인자 클래스를 제거하려고

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

결과 것 대신 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 
관련 문제