Запуск прогностической модели в соответствии со значениями в столбце - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть фрейм данных (я мог бы в будущем его не использовать):

> 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 голосов
/ 23 ноября 2018

Есть пара вариантов.Во-первых, нужно использовать функцию соединения dplyr, чтобы просто добавить ваш первый фрейм данных (PM) ко второму (тест) в качестве нового столбца, а затем индексировать на основе этого.Ниже приведено решение с базой R.

Чтобы получить правильную функцию для отдельной строки, поскольку ваш текущий PM:

model[match(test_TN_number, PM[,2])]

Если PM не имеет первый столбец, равный строкезатем цифры:

model[PM[match(test_TN_number, PM[,2])],1]

Затем это легко распространяется на весь фрейм данных с применением или внутри цикла.

Редактировать: вот для зацикленной версии:

for (test_TN_number in test[,"TN"]){
  model[PM[match(test_TN_number, PM[,2])],1]
}
...