gpt4 book ai didi

r - 从重复表中创建 id 变量

转载 作者:行者123 更新时间:2023-12-01 08:03:22 26 4
gpt4 key购买 nike

我有一个数据框,其中每一行都有一个唯一标识符,但有些行实际上是重复的。

fdf <- data.frame(name = c("fred", "ferd", "frad", 'eric', "eirc", "george"),
id = 1:6)
fdf
#> name id
#> 1 fred 1
#> 2 ferd 2
#> 3 frad 3
#> 4 eric 4
#> 5 eirc 5
#> 6 george 6

我已经确定哪些行是重复的,并且此信息作为唯一 ID 对存储在第二个数据框中。所以 key 告诉我第 1 行与第 2 行和第 3 行等是同一个人。

key <- data.frame(id1 = c(1,1,2,4), id2 = c(2,3,3,5))
key
#> id1 id2
#> 1 1 2
#> 2 1 3
#> 3 2 3
#> 4 4 5

我正在努力想出一种直接的方法来使用 key 在我的原始数据框中创建一个 id 变量。期望的输出是:

fdf$realid <- c(1,1,1,2,2,3)
fdf
#> name id realid
#> 1 fred 1 1
#> 2 ferd 2 1
#> 3 frad 3 1
#> 4 eric 4 2
#> 5 eirc 5 2
#> 6 george 6 3

为清楚起见进行编辑

此处的键是 data.frame fdf 中行之间的一组真实连接。因此,您可以想象从所有可行连接的集合开始:

#  id1 id2
# 1 2
# 1 3
# 1 4
# ...
# 6 4
# 6 5

确定哪些是真正的联系(基于每个观察中的其他变量)。

#  id1 id2 match
# 1 2 match
# 1 3 no match
# 1 4 match
# ...
# 6 4 no match
# 6 5 no match

并子设置为匹配的案例。

最佳答案

最简单的方法是将 key 数据框重新创建为以下格式(即哪个 id 属于哪个 realid)

key <- data.frame(id     = c(1, 2, 3, 4, 5, 6), 
realid = c(1, 1, 1, 2, 2, 3))

然后就是将 fdfkey 合并在一起 merge

fdf <- merge(fdf, key_table, by.x = "id")
fdf
id name realid
1 1 fred 1
2 2 ferd 1
3 3 frad 1
4 4 eric 2
5 5 eirc 2
6 6 george 3

关于r - 从重复表中创建 id 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49054257/

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