英文:
How to replace NA values in one dataframe from another dependent on matching several columns
问题
df1
姓名 | 姓氏 | 出生日期 | 访问日期 | 身份证号码 |
---|---|---|---|---|
亚当 | 史密斯 | 2014/02/03 | 2023/02/12 | 123 |
亚当 | 史密斯 | 2014/02/03 | 2020/01/11 | NA |
本 | 沃克 | 1944/10/14 | 2019/04/05 | 523 |
卡门 | 史密斯 | 1975/11/22 | 2000/12/25 | NA |
df2
姓名 | 姓氏 | 出生日期 | 身份证号码 |
---|---|---|---|
亚当 | 史密斯 | 2014/02/03 | 123 |
本 | 沃克 | 1944/10/14 | 523 |
卡门 | 史密斯 | 1975/11/22 | 422 |
丹尼尔 | 费尔南多 | 1983/12/07 | 989 |
你好,
请问如何从df2中填写df1中缺失的身份证号码,但仅在姓名、姓氏和出生日期完全匹配的情况下进行?这只是一个子集,我的实际数据集有约5000条记录。
我尝试过使用left_join,但结果比我开始时的行数多,因为它似乎会复制条目。我对R非常陌生,所以非常感谢您的任何帮助,谢谢。
英文:
df1
Name | Surname | DOB | Visit date | ID Number |
---|---|---|---|---|
Adam | Smith | 02/03/2014 | 02/12/2023 | 123 |
Adam | Smith | 02/03/2014 | 01/11/2020 | NA |
Ben | Walker | 14/10/1944 | 04/05/2019 | 523 |
Carmen | Smith | 22/11/1975 | 25/12/2000 | NA |
df2
Name | Surname | DOB | ID Number |
---|---|---|---|
Adam | Smith | 02/03/2014 | 123 |
Ben | Walker | 14/10/1944 | 523 |
Carmen | Smith | 22/11/1975 | 422 |
Daniel | Fernando | 07/12/1983 | 989 |
Hello,
Could you please tell me how to fill in the missing ID numbers in df1 from those in df2, but only if the name and surname and DOB all match? This is a subset, my actual dataset has ~ 5000 entries.
I have tried using left_join, but I then end up with more rows than I started with because it appears to duplicate entries. I'm very new to R, so all help much appreciated, thank you.
答案1
得分: 1
我们可以在dplyr包中使用rows_patch
。unmatched="ignore"
将忽略df2中不在df1中的行。
library(dplyr)
rows_patch(df1, df2, by = c('Name', 'Surname', 'DOB'), unmatched = "ignore")
Name Surname DOB Visit_date ID_Number
1 Adam Smith 02/03/2014 02/12/2023 123
2 Adam Smith 02/03/2014 01/11/2020 123
3 Ben Walker 14/10/1944 04/05/2019 523
4 Carmen Smith 22/11/1975 25/12/2000 422
英文:
We can use rows_patch
in dplyr package. unmatched="ignore"
would ignore rows in df2 not in df1.
library(dplyr)
rows_patch(df1,df2,by=c('Name','Surname','DOB'),unmatched="ignore")
Name Surname DOB Visit_date ID_Number
1 Adam Smith 02/03/2014 02/12/2023 123
2 Adam Smith 02/03/2014 01/11/2020 123
3 Ben Walker 14/10/1944 04/05/2019 523
4 Carmen Smith 22/11/1975 25/12/2000 422
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论