我有三组标识符:"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) )这可以在下图中可视化。注意,每个箭头对应于数据帧中的一行。

问题:如何使用这两个映射(两个数据帧)进行从x到z的映射(显示在上图的右侧)。我认为这是一个“传递映射”:x to y和y to z给出了x 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中。
发布于 2014-01-14 04:58:17
你想要合并:
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在必要的地方,名字一致是有帮助的。
https://stackoverflow.com/questions/21106235
复制相似问题