我有两个 Dataframe (df1,df2)。我想填写年龄和性别的值从df1到df2的条件是有相同的ID之间的两个。我尝试了几种方法,使用for循环和检查两个 Dataframe 之间的主题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
3条答案
按热度按时间xfb7svmp1#
您可以将
match
与lapply
一起使用。如果我们在每个原始数据集的ID
列上迭代[[
,并在名称向量上进行匹配,我们可以得到所需的结果。请注意,这也比
merge
快得多。06odsfpq2#
试试
merge(df1, df2, by = "id")
这将把两个数据框合并在一起。如果您的示例很好地表示了您的实际数据,那么在合并之前,您可能需要继续删除df2中的age和sex列。如果你需要保留来自df2的行,即使你在df1中没有匹配的id,那么你可以这样做:
您可以通过在r控制台中键入
?merge()
来了解有关merge
(或任何r函数)的更多信息。lf5gs5x23#
下面是
dplyr(v1.0.0)
方法,它只覆盖df2
中的NA值: