如何计算R中许多不同列中的每小时平均温度

时间:2016-05-10 09:34:13

标签: r aggregate moving-average

我有一个数据框,由不同列中每个系统的34个不同系统的日期和温度组成。我需要计算每个系统的平均每小时温度。我使用此代码计算1个系统的平均值。但如果我想计算其他33个系统的平均值,我必须再次重复代码。是否有更好的方法可以同时在所有列中找到每小时平均值?

dat$ut_ms <- dat$ut_ms/1000
dat[ ,1]<- as.POSIXct(dat[,1], origin="1970-01-01")
dat$ut_ms <- strptime(dat$ut_ms, "%Y-%m-%d %H:%M")
dat$ut_ms <- cut(dat[enter image description here][1]$ut_ms, breaks = 'hour')
meanNPWD2401<- aggregate(NPWD2401 ~ ut_ms, dat, mean)

我添加了数据图片。为了更好地理解我想要的东西。

2 个答案:

答案 0 :(得分:0)

您可以每小时拆分数据并进行迭代,

list1 <- split(dat, cut(strptime(dat$ut_ms, format = '%Y-%m-%d %H:%M'), 'hour'))
lapply(list1, colMeans)

答案 1 :(得分:0)

当您将数据重新排列为长格式时,事情变得更加容易

n.system <- 34
n.time <- 100
temp <- rnorm(n.time * n.system)
temp <- matrix(temp, ncol = n.system)
seconds <- runif(n.time, max = 3 * 3600)
time <- as.POSIXct(seconds, origin = "1970-01-01")
dataset <- data.frame(time, temp)

library(dplyr)
library(tidyr)
dataset %>%
  gather(key = "system", value = "temperature", -time) %>%
  mutate(hour = cut(time, "hour")) %>%
  group_by(system, hour) %>%
  summarise(average = mean(temperature))
相关问题