我有一个数据框(以后可能会不使用它):
> PM
names.model.
1 4
2 5
3 6
4 8
5 9
这意味着对于4
的值,我将使用model[1]
,对于5
的值,我将使用model[2]
等。
如前所述,我有一个模型列表(从1到5)。
我有另一个数据框,其中有一个列TN
。
可以看出:
> head (test)
Ozone Solar.R Wind Temp Month Day TN
2 36 118 8.0 72 5 2 4
8 19 99 13.8 59 5 8 4
14 14 274 10.9 68 5 14 5
40 71 291 13.8 90 6 9 9
62 135 269 4.1 84 7 1 8
69 97 267 6.3 92 7 8 9
我想运行添加新列test$Ozone_pred
,它将每行运行相关模型。例如,对于第一行,我将运行model[1]
,对于第二行(两者均为4)。对于第三行,我将运行model[2]
,对于第四行model[5]
等。
答案 0 :(得分:0)
有两个选项。首先是使用dplyr的join函数将您的第一个数据帧(PM)添加到第二个数据帧(测试)作为新列,然后基于该索引。下面是一个以R为底的解决方案。
要获得正确的功能,因为您当前的PM为:
model[match(test_TN_number, PM[,2])]
如果PM没有第一行等于行号,则:
model[PM[match(test_TN_number, PM[,2])],1]
然后使用apply或在循环中轻松将其扩展到整个数据帧。
编辑:这是for循环版本:
for (test_TN_number in test[,"TN"]){
model[PM[match(test_TN_number, PM[,2])],1]
}