R 每日气候数据的季节性摘要

R 每日气候数据的季节性摘要,r,aggregate,plyr,zoo,R,Aggregate,Plyr,Zoo,我正在寻找每日时间序列的季节性摘要。 我有来自许多台站的每日时间序列气候数据,格式如下 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

我正在寻找每日时间序列的季节性摘要。 我有来自许多台站的每日时间序列气候数据,格式如下

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为。这是一年数据,作为季节总结的示例

我可以使用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))

df$Date我发现借助zoo软件包和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))

df.s如果您的数据是南半球的,那么查找表如何-将
seasure.N
更改为
seasure.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))

seasons您还可以使用Seas软件包获得结果