Итак, у меня есть два data.frames, один из которых называется yearlywindspeeds
, который должен иметь значение для скорости ветра в каждый час года (8760 часов).Второй data.frame содержит среднюю скорость ветра для каждого часа дня (0-23) по месяцам, которая называется cyprusmonthlywindspeeds
.
Я хочу иметь возможность заполнять каждую ячейку [i, j] в yearlywindspeeds
значением, основанным на том, который час и какой месяц.Первый столбец yearlywindspeeds
- это индекс месяца (Months
).Вот код, который у меня есть, который работает нормально, я думаю:
for(i in 1:nrow(yearlywindspeeds)) {
if (yearlywindspeeds[i, "Months"] == 1) {
yearlywindspeeds[i, ] = cyprusmonthlywindspeeds[1, ]
}
}
Я, очевидно, мог бы просто продолжать делать этот месяц за месяцем, заменяя строки по мере продвижения, но я просто подумал, что может бытьболее элегантный / обучающий способ сделать это так, чтобы я смотрел в каждой ячейке, где я нахожусь по строке / столбцу, а затем извлекал значение из среднемесячных значений на основе пары индексов i, j.
Буду признателен за любую помощь.
Чтобы ответить на комментарий здесь, это имена столбцов data.frame s
> head(yearlywindspeeds)
Month 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
1 1 2 2 2 2 2 2 2 2 2 2 3 5 5 5.2 5.2 5.2 5.2 4.2 3.5 3 2.5 2.4 2.2 2
2 1 2 2 2 2 2 2 2 2 2 2 3 5 5 5.2 5.2 5.2 5.2 4.2 3.5 3 2.5 2.4 2.2 2
3 1 2 2 2 2 2 2 2 2 2 2 3 5 5 5.2 5.2 5.2 5.2 4.2 3.5 3 2.5 2.4 2.2 2
4 1 2 2 2 2 2 2 2 2 2 2 3 5 5 5.2 5.2 5.2 5.2 4.2 3.5 3 2.5 2.4 2.2 2
5 1 2 2 2 2 2 2 2 2 2 2 3 5 5 5.2 5.2 5.2 5.2 4.2 3.5 3 2.5 2.4 2.2 2
6 1 2 2 2 2 2 2 2 2 2 2 3 5 5 5.2 5.2 5.2 5.2 4.2 3.5 3 2.5 2.4 2.2 2
> head(cyprusmonthlywindspeeds)
Month X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22
1 1 2 2.0 2.0 2 2 2.0 2.0 2.0 2 2.0 3.0 5 5.0 5.2 5.2 5.2 5.2 4.2 3.5 3.0 2.5 2.4 2.2
2 2 2 2.0 2.0 2 2 2.0 2.0 2.0 2 2.0 3.0 4 4.0 4.2 4.2 4.2 5.2 4.2 3.5 3.0 2.5 2.4 2.2
3 3 2 2.0 2.0 2 2 2.0 2.0 2.0 2 2.0 3.0 5 5.0 6.2 6.2 6.2 6.2 5.2 3.5 3.0 2.5 2.4 2.2
4 4 2 2.0 2.0 2 2 2.0 2.0 2.0 2 2.0 3.0 5 5.0 6.2 6.2 6.2 6.2 5.2 3.5 3.0 2.5 2.4 2.2
5 5 3 2.5 2.2 2 2 1.5 1.5 1.8 2 2.5 2.8 3 3.2 3.5 4.2 5.5 5.5 5.5 5.5 5.5 4.5 4.0 4.5
6 6 3 2.5 2.2 2 2 1.5 1.5 1.8 2 2.5 2.8 3 3.2 3.5 4.2 5.5 5.5 5.5 5.5 5.5 4.5 4.0 4.5
X23
1 2
2 2
3 2
4 2
5 3
6 3
По сути, для каждого из 24 часов дня у меня есть значение дляскорость ветра в зависимости от месяца.Я хочу определить значение скорости ветра в каждый час года.Приведенный выше код на самом деле работает, но, как я выяснил, только если индекс «Месяц» находится в одном столбце для обоих фреймов данных;Очевидно, что часы должны быть расположены в том же порядке - и я пошел вперед и делал это все 12 месяцев, но я просто думаю, что должен быть лучший способ сделать это.
Текущая строка принимает только значения скорости ветра и копирует их необходимое количество раз, что кажется неуклюжим.Там должен быть лучший способ сделать это.