首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按ID匹配两个数据集之间的观测值

按ID匹配两个数据集之间的观测值
EN

Stack Overflow用户
提问于 2019-02-21 00:18:00
回答 1查看 28关注 0票数 0

我正在使用以下数据:http://people.stern.nyu.edu/wgreene/Econometrics/healthcare.csv

我想要做的是训练我的算法来正确预测一个人是否会在接下来的一段时间里退出。

代码语言:javascript
复制
data1 <- subset(data, YEAR==1984)

data2 <- subset(data, YEAR==1985)

didtheydrop <- as.integer(data1$id)

didtheydrop <- lapply(didtheydrop, function(x) as.integer(ifelse(x==data2$id, 0, 1)))

这创建了一个很大的列表,其中包含我想要的值,但我不确定。最后,我想将这个变量附加到1984年的数据中,然后用它来创建我的模型。

我可以做些什么来确保比较合适的值?列表长度不同,而且它们出现的顺序也不正确(例如,受访者3-7在1984年没有回答,但他们出现在1985年)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 03:09:05

假设data1和data2是两个数据帧(不清楚,因为它似乎是从称为数据的原始较大的单个数据帧中提取的),我认为将它们合并并使用单个数据帧会更好。也就是说,如果存在一个较大的数据帧,则不要将其子集,只需删除不需要的列;如果data1和data2是两个数据帧,则合并它们并只处理一个数据帧。

在R中有多种方法可以做到这一点。

您应该在控制台中查看调用?merge的合并函数,并阅读函数描述。

从本质上讲,要合并两个数据帧,您应该执行如下操作:

merge(data1, data2, by= columnID) #Where columnID is the name of the variable that identifies the ID. If it is different in data1 and data2 you can use by.x and by.y

然后,您必须定义是否要用参数all.x、all.y和all合并两个表中的所有行:即使在data2中没有找到匹配,也要合并来自data1的所有值,或者即使在data1中没有找到匹配,也要合并来自data2的所有值,或者不管另一个数据库中是否有匹配的ID,也要合并所有的值。

Merge位于R的任何安装的基础包中。

您还可以使用dplyr包,它使join的类型更加明确:

inner_join(data1, data2, by = "ID") left_join(data1, data2, by = "ID") right_join(data1, data2, by = "ID") full_join(data1, data2, by = "ID")

这是一个很好的dplyr join https://rpubs.com/williamsurles/293454链接

希望能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54790882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档