2015-01-21 7 views
1

두 개의 df에 정확히 같은 변수가 없어도 두 개의 data.frame을 병합 할 수 있습니까?R 비슷한 데이터를 가진 두 data.frames를 병합하십시오.

예 :

df1 <- data.frame(C=c("1Q","4R"),B= c("A","plane")) 
df <- data.frame(A=c(1,2),B=c("A (Inc", "plane (Inc)")) 

> df 
# A   B 
#1 1  A (Inc 
#2 2 plane (Inc) 

> df1 
# C  B 
#1 1Q  A 
#2 4R plane 

는 DF1 및 DF 병합 할 수 있습니까? 여기서는 일치가 발생하도록 dfs의 데이터를 미리 수정하고 싶지 않습니다. DFS에 보관하면서 병합 (Inc)을 삭제하려고합니다. 이 멍청한 예에서 확실한 해결책은 cbind()이지만 실제로 내가 찾고있는 병합입니다.

내 병합 data.frame은 다음과 같습니다

df 

# C  B A   B 
# 1 1Q  A 1  A (Inc 
# 2 4R plane 2 plane (Inc) 
+0

'추가 (DF1은, DF)'두 번째 'B'는 'B이 될 것이라고합니다 .1 ' –

+0

변수 이름을 변경하는 것이 어렵지 않고 (예 :'names (df) <- names (df1)'), 체계적으로 변수 이름을 무시하는 것은 찾기 힘든 버그를 암시하는 좋은 방법입니다. – Jthorpe

+0

... * "병합에서 (Inc)를 삭제하고 DFS에 보관하는 것이 좋습니다."* 이것은 나에게 이해가되지 않습니다. 당신이 제안한 결과물도 버려 지거나'cbind' 이외의 다른 것을 해왔다고 제안 할만한 것도 없습니다. df1의 "A"와 "df"의 "A *"를 연결하려고합니까? 보다 유익한 예를 제공해주십시오. – r2evans

답변

1

당신은 다음과 같이 진행할 수 :

> merge(df1,transform(df, B = gsub("[[:space:]]*\\(Inc.*$","",df$B), B1=df$B)) 
     B C A   B1 
1  A 1Q 1  A (Inc 
2 plane 4R 2 plane (Inc) 
관련 문제