我正在使用以下数据:http://people.stern.nyu.edu/wgreene/Econometrics/healthcare.csv
我想要做的是训练我的算法来正确预测一个人是否会在接下来的一段时间里退出。
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年)
发布于 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链接
希望能有所帮助
https://stackoverflow.com/questions/54790882
复制相似问题