汇总功能功能

时间:2020-08-26 09:54:23

标签: r aggregate

我对aggregate()函数功能有一个疑问。让我们看下面的代码:

set.seed(20)
date<-(seq(as.Date('2000-01-01'),as.Date('2020-04-01'),by = '1 month'))
x<-rnorm(244)
df1<-data.frame(date,x)
df2 <- aggregate(x~quarter + year, transform(df1, 
           quarter = quarters(date), year = as.integer(format(date, '%Y'))), mean)
df2[order(df2$year), ]

相对于平均值,它将每月数据转换为每季度数据。我也不能取平均值,而是某个季度第一个月的值。我只需要将“平均”更改为“第一”即可。类似地,我可以将“均值”更改为“最后”来占用季度的第三个月。但是我不知道该如何度过第二个月。将“平均”更改为“第二”无效。

总结

我可以轻松地将“均值”更改为季度的第一个月或第三个月:

quarter = quarters(date), year = as.integer(format(date, '%Y'))), first)
quarter = quarters(date), year = as.integer(format(date, '%Y'))), last)

但是有什么办法可以暗示我要进入季度的第二个月吗?

1 个答案:

答案 0 :(得分:1)

您可以编写匿名function()mean(x)给出子集值的平均值,x[2]给出第二个值。

df2 <- aggregate(x ~ quarter + year, transform(df1, 
                    quarter=quarters(date), year=as.integer(format(date, '%Y'))),
          function(x) x[2])

结果:

df2[order(df2$year), ]
#    quarter year           x
# 1       Q1 2000 -0.58592447
# 2       Q2 2000 -0.44656677
# 3       Q3 2000 -0.86901834
# 4       Q4 2000 -0.02013537
# 5       Q1 2001  1.32322085
# 6       Q2 2001  0.97057758
# 7       Q3 2001  0.38921440
# 8       Q4 2001  0.72222970
# 9       Q1 2002 -1.47206332
# 10      Q2 2002 -2.47463643
# 11      Q3 2002  1.59014577
# 12      Q4 2002 -1.09734184
# 13      Q1 2003  1.24556891
# 14      Q2 2003 -0.81848302
# 15      Q3 2003 -0.36902897
# 16      Q4 2003  0.88187751
# 17      Q1 2004 -0.38130918
# 18      Q2 2004  0.19033942
# 19      Q3 2004  0.05620190
# 20      Q4 2004 -0.81825711
# 21      Q1 2005 -0.06943659
# 22      Q2 2005  1.19633067
# 23      Q3 2005 -1.06966198
# 24      Q4 2005  0.65542996
# 25      Q1 2006 -0.68322354
# 26      Q2 2006 -0.15076679
# 27      Q3 2006 -0.02958576
# 28      Q4 2006  0.09713576
# 29      Q1 2007 -0.63777542
# 30      Q2 2007  1.21094080
# 31      Q3 2007 -1.96802578
# 32      Q4 2007 -0.06777808
# 33      Q1 2008  1.10106166
# 34      Q2 2008  0.54804306
# 35      Q3 2008  0.70092043
# 36      Q4 2008 -0.10999239
# 37      Q1 2009 -1.51505324
# 38      Q2 2009 -0.95063164
# 39      Q3 2009 -0.93091312
# 40      Q4 2009 -0.07976572
# 41      Q1 2010  0.27763886
# 42      Q2 2010  0.81182877
# 43      Q3 2010 -1.78886877
# 44      Q4 2010 -1.09774144
# 45      Q1 2011  1.66913740
# 46      Q2 2011 -0.66573063
# 47      Q3 2011  0.92690149
# 48      Q4 2011  0.29031144
# 49      Q1 2012  0.08276795
# 50      Q2 2012 -0.47659808
# 51      Q3 2012 -0.85723953
# 52      Q4 2012  1.15483093
# 53      Q1 2013 -0.14563202
# 54      Q2 2013  1.03708875
# 55      Q3 2013  0.33410243
# 56      Q4 2013 -0.35670625
# 57      Q1 2014  0.32509028
# 58      Q2 2014  0.58925249
# 59      Q3 2014 -1.38040139
# 60      Q4 2014  1.34646214
# 61      Q1 2015  0.43327790
# 62      Q2 2015  1.11073002
# 63      Q3 2015  0.29225471
# 64      Q4 2015  0.67960387
# 65      Q1 2016 -1.14082103
# 66      Q2 2016  0.21677192
# 67      Q3 2016  1.03197341
# 68      Q4 2016  0.70875732
# 69      Q1 2017 -0.66832511
# 70      Q2 2017  0.48740584
# 71      Q3 2017 -1.01494026
# 72      Q4 2017 -1.21028886
# 73      Q1 2018 -0.46631706
# 74      Q2 2018 -0.62211421
# 75      Q3 2018 -0.64374836
# 76      Q4 2018 -1.79654504
# 77      Q1 2019 -0.57687158
# 78      Q2 2019  0.26390029
# 79      Q3 2019  2.93209205
# 80      Q4 2019 -1.05687526
# 81      Q1 2020 -0.90212039
# 82      Q2 2020          NA
相关问题