Как я могу заполнить этот data.frame значениями для определенного часа? - PullRequest
0 голосов
/ 21 мая 2019

Итак, у меня есть два 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 месяцев, но я просто думаю, что должен быть лучший способ сделать это.

Текущая строка принимает только значения скорости ветра и копирует их необходимое количество раз, что кажется неуклюжим.Там должен быть лучший способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...