如何解决如何从具有重复的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
我使用merge使用df3获得结果
我得到的输出看起来像
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
解决方法
基于显示的示例,这些列应由同一列“ 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元素。 / p>
library(tidyr)
library(dplyr)
df3 <- df3 %>%
fill(DOB)
,
将data.table
与roll=T
选项一起使用的另一种解决方案:
merge(dx[,list(MNO)],dx2,roll=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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。