通过ID

时间:2019-02-20 16:18:00

标签: r list dummy-variable

我正在处理以下数据: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年出现)

1 个答案:

答案 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

的好链接

希望有帮助

相关问题