2014-01-14 3 views
4

"x", "y"및 "z"의 세 가지 세트가 있습니다. 또한 두 개의 2 열 데이터 프레임을 사용하여 각각의 식별자 집합을 다른 식별자 집합에 매핑합니다.식별자를 전 환적으로 매핑하기

x2y = data.frame(x = c("A","A","B","B","C","D","E","F"), 
        y = c(1,2,1,2,3,4,4,5)) 
y2z = data.frame(y = c(1,1,2,3,4,4,5,5,5), 
        z = c(1,2,3,3,6,7,6,7,8)) 

이것은 아래 그림에서 시각화 할 수 있습니다. 각 화살표는 데이터 프레임의 한 행에 해당합니다.

enter image description here

질문 : 어떻게 (위 그림의 오른쪽에 표시) zx에서 매핑 를 만들기 위해이 두 가지 매핑 (두 개의 데이터 프레임)를 사용합니까. 나는 을 "전 이적 매핑"이라고 생각합니다. x to yy to zx to z입니다. 나는이하고 싶은 데이터 프레임 ...

x2z = data.frame(x = c("A","A","A","B","B","B","C","D","D","E","E","F","F","F"), 
        z = c(1,2,3,1,2,3,3,6,7,6,7,6,7,8)) 

참고 : 내 데이터 프레임이 너무 효율적인 코드가 매우 중요, 보통 ~ 50,000 행입니다. 루프로이 문제를 해결할 때 실행하는 데 몇 분이 걸렸습니다. 내 유일한 요구 사항은 코드가 당신은 병합 할 R.

+0

귀하의 그래픽이 멋지게 보입니다. 어떻게 그걸 만들었 니? –

+0

어도비 일러스트 레이터로 수동으로 그려져 있습니다. 나는 Rgraphviz와 같은 것을 사용하는 것을 고려해 보았지만,이 작은 단일 사용 사례에는 시간을 할애 할 가치가 없었습니다. – kdauria

답변

2

에있을 것입니다 : 그것은 이름이 필요한 경우 동의 여기에 도움이

merge(x2y, y2z)[c('x','z')] 
## x z 
## 1 A 1 
## 2 A 2 
## 3 B 1 
## 4 B 2 
## 5 A 3 
## 6 B 3 
## 7 C 3 
## 8 D 6 
## 9 D 7 
## 10 E 6 
## 11 E 7 
## 12 F 6 
## 13 F 7 
## 14 F 8 

.

+1

감사합니다. 28 문자가 1,655 자와 숫자 문제를 해결할 때마다 나는 항상 즐깁니다. 그것은 위대한 작품. – kdauria