基于r的月份的总列数

时间:2012-07-30 13:54:08

标签: r

我正在尝试根据月份汇总数据。例如,我有这个数据集:

x
        Date App Vol
1 2010-01-30   A 100
2 2010-01-28   B 140
3 2010-01-30   C 160
4 2010-02-28   A 110
5 2010-02-28   B 120
6 2010-02-28   C 300

我希望能够按月汇总App数据。根据上面的数据框架, A应为210,B = 260,C = 460等。

我在下面使用聚合函数,但是收到错误:

y<-aggregate(x$Vol, list(Month = format(as.POSIXct(x$Date), "%Y-%m")), sum)

任何想法?

2 个答案:

答案 0 :(得分:1)

首先将Vol转换为数字(它以某种方式搞砸了):

x$Vol <- as.numeric(as.character(x$Vol))

我可以通过将Vol转换为如下所示的因素来重现您的错误:

x$Vol <- as.factor(x$Vol)
aggregate(x$Vol, list(x$App), sum)

#> aggregate(x$Vol, list(x$App), sum)
#Error in Summary.factor(1:2, na.rm = FALSE) : 
#  sum not meaningful for factors

你也说:

I would like to be able to summary App data by each month. According to the 
data frame above, A should be 210, B = 260, C=460 etc.

如果是这种情况,请使用:

x$Month <-  format(as.POSIXct(x$Date), "%Y-%m")
aggregate(x$Vol, list(x$Month, x$App), sum)

否则使用ttmacer的建议。

答案 1 :(得分:0)

x<-read.table(header=T,text="Date       App   Vol
    1 2010-01-30   A        100
    2 2010-01-28   B     140
    3 2010-01-30   C     160
    4 2010-02-28   A        110     
    5 2010-02-28   B         120      
    6 2010-02-28   C         300") 



y<-aggregate(x$Vol, list(Month = format(as.POSIXct(x$Date), "%Y-%m")), sum)
y<-aggregate(x$Vol, list(x$App), sum)

尝试使用此数据。