首页 > 解决方案 > 如何使用在 r 中重复的另一个数据框中的特定列更新数据框中的新列?

问题描述

大家好我的df1看起来像

MNO  DOB
123  NA
123  NA
234  NA
234  NA
345  NA
456  NA
456  NA

我的df2有

MNO  DOB
123  22-04-1996
234  16-06-1994
345  05-05-1990
456  18-08-2000

我使用合并来获得结果,使用 df3 <- merge(df1,df2,by.x = "MNO",all.x = TRUE)

我得到的输出看起来像

MNO  DOB
123  22-04-1996
123  NA
234  16-06-1994
234  NA
345  05-05-1990
456  18-08-2000
456  NA

预期成绩 :

MNO  DOB
123  22-04-1996
123  22-04-1996
234  16-06-1994
234  16-06-1994
345  05-05-1990
456  18-08-2000
456  18-08-2000

标签: rdplyrmerge

解决方案


根据显示的示例,列应由同一列“MNO”合并,因此我们可以使用by而不是by.x

merge(df1[1], df2, by = "MNO", all.x = TRUE)
#  MNO        DOB
#1 123 22-04-1996
#2 123 22-04-1996
#3 234 16-06-1994
#4 234 16-06-1994
#5 345 05-05-1990
#6 456 18-08-2000
#7 456 18-08-2000

如果 'df3' 的输出基于不同的代码,那么在这merge一步之后,我们可以fill使用tidyr之前的非 NA 填充 NA 元素

library(tidyr)
library(dplyr)
df3 <- df3 %>%
             fill(DOB)

推荐阅读