根据列中的值运行预测模型

时间:2018-11-23 13:30:50

标签: r dataframe prediction

我有一个数据框(以后可能会不使用它):

> 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]等。

1 个答案:

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