如何从小时值计算每日平均值?

时间:2015-01-30 14:45:37

标签: r text-files

我有一个由6列组成的文本文件,如下所示。测量每30分钟进行几年(2001-2013)。我想计算每日平均值,例如:对于2001年,所有值都对应于第一天(1)并计算平均值,并对该年份的所有日期以及文本文件中可用的所有年份执行此操作。

阅读文件:

LR=read.table("C:\\Users\\dat.txt", sep ='', header =TRUE)

头:

head(LR)
   Year day hour mint valu1 valu2
1 2001   1    5   30     0     0
2 2001   1    6    0     1     0
3 2001   1    6   30     2     0
4 2001   1    7    0     0     7
5 2001   1    7   30     5     8
6 2001   1    8    0     0     0

2 个答案:

答案 0 :(得分:4)

尝试:

library(plyr)
ddply(LR, .(Year, day), summarize, val = mean(valu1)) 

另一个不太优雅的选择:

LR$n <- paste(LR$Year, LR$day, sep="-")
tapply(LR$valu1, LR$n, FUN=mean)

如果您想选择特定的年份范围,请使用子集:

dat < ddply(LR, .(Year, day), summarize, val = mean(valu1)) 
subset(dat, Year > 2003 & Year < 2005)

答案 1 :(得分:2)

您可以尝试aggregate

res <- aggregate(LR, by = list(paste0(dat$Year, dat$day)), FUN = mean)
## You can remove the extra columns if you want
res[, -c(1,4,5)]

或者正如Michael Lawrence建议的那样,使用公式界面:

aggregate(cbind(valu1, valu2) ~ Year + day, LR, mean)