0

我在 R 中具有 3 列和多行(1000+)的 data.frame 中每小时收集当地温度:

日 - 小时 - 温度

  • 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 等于 15C,所以我需要:

日 - 小时 - 温度 - 平均

  • 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,聚合但我失败了。有任何想法吗?

4

1 回答 1

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])
于 2013-04-09T14:17:55.090 回答