2013-04-09 2 views
0

я собирал местную температуру на почасовой основе в data.frame с 3-мя колоннами и большим количеством строк (1000+) в R:Добавить средний столбец в массиве

День - Час - Температура

  • 1 - 11:00 - 14
  • 1 - 12:00 - 17
  • ...
  • 2 - 11:00 - 10
  • 2 - 12:00 - 19
  • ...
  • 3 - 11:00 - 15
  • 3 - 12:00 - 9

Мне нужно добавить новый столбец, который содержит среднюю температуру в пределах каждого часового интервала. В примере: средняя Умеренный в 11:00 равна 13ºC, в 12:00 равна 15С, так что мне нужно:

день - час - температура - средняя

  • 1 - 11:00 - 14 - 13
  • 1 - 12:00 - 17 - 15
  • ...
  • 2 - 11:00 - 10 - 13
  • 2 - 12:00 - 19 - 15
  • ...
  • 3 - 11:00 - 15 - 13
  • 3 - 12:00 - 9 - 15

Я попытался cbind, агрегат, но мне не удалось. Есть идеи?

+0

Когда вы говорите, не удалось, что произошло вместо того, что вы ожидали? –

+0

Не могли бы вы дать нам образец ваших данных в качестве воспроизводимого примера? – juba

+0

, если вы используете 'sqldf package' в' R', упоминается решение для аналогичного вопроса [здесь] (http://stackoverflow.com/questions/15839408/mysql-query-to-join-3-queries-in- 1-table-while-усреднение/15840578 # 15840578) – Metrics

ответ

0

Если df ваш data.frame, следующее может работать:

avgTemp <- sapply(unique(df$Hour),function(x){mean(df$Temperature[df$Hour==x])}) 
    names(avgTemp) <- unique(df$Hour) 

    df <- cbind(df,avgTemp[df$Hour]) 
Смежные вопросы