我正在寻找每日时间序列的季节性摘要。 我有来自许多电台的每日时间序列气候数据,格式如下。
head(df)
Date ID Ele Aspect Tmin Tmax Prcp
1 1970-01-01 crb200 1283 West -13.3 -2.8 0
2 1970-01-02 crb200 1283 West -12.2 -5.6 1
3 1970-01-03 crb200 1283 West -15.0 -6.1 0
4 1970-01-04 crb200 1283 West -20.0 -10.0 0
5 1970-01-05 crb200 1283 West -19.4 -6.7 0
6 1970-01-06 crb200 1283 West -16.1 -5.6 0
长数据框df为here。这是一年的数据作为季节性摘要的示例。
我可以使用ddply将其汇总为每月(和每年),如下所示。
df$Date<-as.Date(df$Date, format="%Y-%m-%d",tz='GMT')
df.m<-ddply(df,.(Date=format(Date,"%Y-%b")),here(summarise),
ID=(df[2,2]),
Ele=(df[2,4]),
Aspect=(df[2,5]),
Prcp.m = sum(Prcp, na.rm=F),
Tmin.m = mean(Tmin, na.rm=F),
Tmax.m = mean(Tmax, na.rm=F))
print(summary(df.m))
我正在尝试为每年的每个季节执行类似的摘要。我想要总降水量和平均每年4个季节的最低和最高温度。
有没有办法可以使用ddply实现这一目标?如果不是我怎么能这样做? 谢谢。
答案 0 :(得分:1)
查找表如何 - 如果您的数据是南半球,请将season.N
更改为season.S
:
seasons<-data.frame(month=c("Dec","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov"),
season.N=rep(c("Winter","Spring","Summer","Fall"),each=3),
season.S=rep(c("Summer","Fall","Winter","Spring"),each=3))
df.s<-ddply(df,.(season=seasons[seasons$month==format(Date,"%b"),"season.N"]),here(summarise),
ID=(df[2,2]),
Ele=(df[2,4]),
Aspect=(df[2,5]),
Prcp.m = sum(Prcp, na.rm=F),
Tmin.m = mean(Tmin, na.rm=F),
Tmax.m = mean(Tmax, na.rm=F))
答案 1 :(得分:0)
我发现在动物园包的帮助和ddply的使用下,这可以实现。 代码如下。这是以前代码的延续。
df.s<-ddply(df.m,.(sea=(format(as.yearqtr(as.yearmon(df$Date, "%Y-%b") + 1/12)))),here(summarise),
ID=(df[2,2]),
Ele=(df[2,4]),
Aspect=(df[2,5]),
Prcp.sea = sum(Prcp.m, na.rm=F),
Tmin.sea = mean(Tmin.m, na.rm=F),
Tmax.sea = mean(Tmax.m, na.rm=F))
print(summary(dataframe.s))
答案 2 :(得分:-1)
您也可以使用Seas包来获得结果。