我的数据框重新设置了下面的数据框
Date Expenditure Indicator
29-01-2011 5455 212
25-01-2012 5452 111
11-02-2011 365 5
我目前有兴趣总结支出值,我试图使用下面的功能
dta.sum <- aggregate(x = dta, FUN = sum,
by = list(Group.date = dta$date))
但是R返回以下错误, Summary.Date中的错误(c(15614L,15614L,15614L,15614L,15614L,15614L,:未定义为&#34的总和;日期和#34;对象。 Date 列以前使用 as.Date 函数定义为日期。类似函数但使用 mean 可正常工作。< / p>
dta.sum <- aggregate(x = dta, FUN = mean
by = list(Group.date = dta$date))
我想将日期格式化为日期。
答案 0 :(得分:5)
指出要在聚合语句中获取聚合的变量,并且应该解决此问题:
dta.sum <- aggregate(x = dta[c("Expenditure","Indicator")],
FUN = sum,
by = list(Group.date = dta$Date))
编辑添加说明:当您将aggregate
参数仅作为dta
时,聚合尝试将参数应用于每一列。没有为R中的日期值定义sum
,因此您会收到错误。您希望使用上述代码排除分组列。
答案 1 :(得分:4)
从基础升级并使用data.table
来简化(并加快)您的代码/生活:
library(data.table)
dt = as.data.table(dta)
dt[, lapply(.SD, sum), by = Date]
答案 2 :(得分:4)
或使用dplyr
:
library(dplyr)
dta %>%
group_by(Date) %>%
summarise(Tot.Expenditure = sum(Expenditure))
答案 3 :(得分:3)
df <- data.frame(c('29-01-2011', '25-01-2012', '11-02-2011'), c(5455, 5452, 365), c(212, 211, 5))
colnames(df) <- c('Date', 'Expenditure', 'Indicator')
colSums(df[2])
#>Expenditure
#11272