微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 R 中使用姓名、性别、种族和粗略估计年龄跨大型数据集进行匹配

如何解决如何在 R 中使用姓名、性别、种族和粗略估计年龄跨大型数据集进行匹配

我有 2 个数据集,每个数据集大约 2 万行。

df 1 包含以下信息

名字 |姓氏 |种族|性 |出生年份 |唯一标识

df2 包含以下内容

名字 |姓氏 |种族|性 |年龄

我想加入数据集,以便获得 DF 2 中每一行相关行的唯一 ID。问题是由于这些数据是纵向的,有些人在 df2 中多次出现并且有多个年龄。例如

John | smith | white | male | 29
John | smith | white | male | 30

而 df1 包含以下内容

John | smith | white | male | 1991 | 74b23

最终我希望数据看起来像这样


John | smith | white | male | 29 | 74b23
John | smith | white | male | 30 | 74b23

有没有办法返回精确匹配的名字、姓氏、种族和性别,但匹配年龄给或需要一年?

谢谢!

解决方法

library(data.table)

df1 <- data.table(f.name = "John",l.name = "Smith",race = "white",gender = "male",b.year = 1991,ID = "74b23")    

df2 <- data.table(f.name = "John",age = c(29,30))

df1[,age := year(Sys.Date())-b.year]

setkeyv(df1,c("f.name","l.name","race","gender","age"))
setkeyv(df2,"age"))
df3 <- df1[df2,roll = "nearest"]

“roll”值使用 setkeyv 中提供的最后一列,在本例中为 age。

> df3
   f.name l.name  race gender b.year    ID age
1:   John  Smith white   male   1991 74b23  29
2:   John  Smith white   male   1991 74b23  30

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。