繁体   English   中英

R使用日期列聚合data.frame

[英]R aggregate data.frame with date column

我有数据框重新下面的数据框

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,:未为“日期”对象定义的总和日期列以前使用as定义为日期。日期功能。类似的功能,但平均工作正常。

dta.sum <- aggregate(x = dta, FUN = mean 
                             by = list(Group.date = dta$date))

我想将日期格式化为日期。

指出您尝试在聚合语句中获取聚合的变量,并且应该解决此问题:

dta.sum <- aggregate(x = dta[c("Expenditure","Indicator")],
                     FUN = sum,
                     by = list(Group.date = dta$Date))

编辑添加说明:当您将aggregate参数作为dta ,聚合尝试将参数应用于每一列。 sum没有为R中的日期值定义,因此您会收到错误。 您希望使用上述代码排除分组列。

从基础升级并使用data.table来简化(并加速)您的代码/生活:

library(data.table)

dt = as.data.table(dta)

dt[, lapply(.SD, sum), by = Date]

或者使用dplyr

library(dplyr)

dta %>%
  group_by(Date) %>%
  summarise(Tot.Expenditure = sum(Expenditure))
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 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM