我正在尝试根据月份汇总数据。例如,我有这个数据集:
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)
任何想法?
答案 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)
尝试使用此数据。