2013-05-13 3 views
2

2 개의 데이터 프레임에서 두 개의 열 이름을 비교하고 원본 데이터 프레임에서 일치하는 열 이름을 사용하여 새 테이블을 만들고 싶습니다.열 이름을 비교하고 새 테이블을 만듭니다.

a<-data.frame(a1=c(1,2,3,4,5),a2=c(2,3,4,5,6),b1=c(3,4,5,6,7),c1=c(4,5,6,7,8)) 
b<-data.frame(c1=c(10,20,30,40,50),b1=c(20,30,40,50,60),d1=c(30,40,50,60,70)) 

열 이름 (예 : 'c1'등)이 일치 할 때 + b를 추가하는 새로운 데이터 프레임을 만들고 싶습니다. 예 : 내 새로운 데이터 프레임 'c'는 위의 데이터를 기반으로 다음과 같습니다. c = data.frame (c1 = c (10 + 4,20 + 5,30 + 6,40 + 7,50 + 8),

원본 데이터 프레임이 위보다 훨씬 크기 때문에 'for (i in 1 : 10) '. 그러나 두 데이터 열 모두에서 두 열 이름이 같은 순서로있는 경우에만 작동합니다.

도움을 주셔서 감사합니다. 내가 생각할 수있는

답변

4
as.data.frame(lapply(intersect(names(a), names(b)), 
       function(name) a[name] + b[name])) 
+1

이것은 내가 찾고있는 것입니다. 감사. – Bhante

+0

이 일치하는 열 이름을 그릴 수있는 방법이 있습니까? 나는 다음을 사용하여 플롯을 추가했다 : lapply (intersect (names (a), names (b)), function (name) plot ([name], b [name])) 오류 : stripchart.default (x1, ...) : 잘못된 플로팅 방법 – Bhante

+1

추가 질문은 새로운 게시물을 작성하십시오. –

1

간단한 방법은

c <- cbind(b[, which(colnames(b)%in% colnames(a))], 
    a[, which(colnames(a)%in% colnames(b))]) 

당신이 찾고 있던 무슨이다인가?

환호

+0

는 확실히 동일한 COLUMNNAMES 갖는 테이블을 생성한다. 감사. – Bhante

관련 문제