gpt4 book ai didi

r - 传递性地映射标识符

转载 作者:行者123 更新时间:2023-12-04 09:40:23 28 4
gpt4 key购买 nike

我有三组标识符:“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

问题:
如何使用这两个映射(两个数据框)进行映射
来自 xz (显示在上图的右侧)。一世
将其视为“传递映射”: 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 中。

最佳答案

你想合并:

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

这有助于在必要时名称一致。

关于r - 传递性地映射标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21106235/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com