我正在处理以下数据: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年出现)
答案 0 :(得分:0)
假设data1和data2是两个数据帧(不清楚,因为您似乎是从称为data的原始较大单个数据帧中提取了它们),我认为最好将它们合并并使用单个数据帧。也就是说,如果只有一个较大的数据框,则不要将其子集化,只需删除不需要的列即可;如果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的所有值还是data2的所有值即使在data1或所有值中都找不到匹配项,而不管另一个数据库中是否有匹配的ID。
任何R的安装都在基本软件包中。
您还可以使用dplyr软件包,这使连接的类型更加明确:
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
希望有帮助