gpt4 book ai didi

r - 使用 R 中两个数据帧的匹配 ID 填充列

转载 作者:行者123 更新时间:2023-12-01 18:17:01 24 4
gpt4 key购买 nike

我有两个数据帧(df1、df2)。我想填写从 df1 到 df2 的 AGE 和 SEX 值,条件是两者之间具有相同的 ID。我尝试了几种使用 for 循环并检查两个数据帧之间的主题 ID 匹配的方法,但失败了。结果应与 df3 中的结果相同。我有一个巨大的数据集,所以我想要一段 R 代码可以轻松完成此任务。我将非常感谢您对此的帮助。谢谢。

df1:
ID AGE SEX
90901 39 0
90902 28 0
90903 40 1

df2:
ID AGE SEX Conc
90901 NA NA 5
90901 NA NA 10
90901 NA NA 15
90903 NA NA 30
90903 NA NA 5
90902 NA NA 2.45
90902 NA NA 51
90902 NA NA 1
70905 NA NA 0.5

result:
df3:
ID AGE SEX Conc
90901 39 0 5
90901 39 0 10
90901 39 0 15
90903 40 1 30
90903 40 1 5
90902 28 1 2.45
90902 28 0 51
90902 28 0 1
70905 NA NA 0.5

最佳答案

您可以将 matchlapply 结合使用来实现此目的。如果我们在名称向量上迭代 [[ 并匹配每个原始数据集的 ID 列,我们就可以获得所需的结果。

nm <- c("AGE", "SEX")
df2[nm] <- lapply(nm, function(x) df1[[x]][match(df2$ID, df1$ID)])
df2
# ID AGE SEX Conc
# 1 90901 39 0 5.00
# 2 90901 39 0 10.00
# 3 90901 39 0 15.00
# 4 90903 40 1 30.00
# 5 90903 40 1 5.00
# 6 90902 28 0 2.45
# 7 90902 28 0 51.00
# 8 90902 28 0 1.00
# 9 70905 NA NA 0.50

请注意,这也比合并快很多。

关于r - 使用 R 中两个数据帧的匹配 ID 填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25539326/

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