繁体   English   中英

如何使用在r中重复的另一个数据框中的特定列更新数据框中的新列?

[英]How to update new column in data-frame with specific column from another data-frame with duplicated in 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

根据显示的示例,列应该由同一列“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步骤中,我们可以filltidyr来填充先前的非NA NA的元素

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

使用带有roll=T选项的data.table另一种解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM