在data.table中按周,月分组?

时间:2018-09-14 13:02:02

标签: r data.table

学习data.table库。这是一个可重现的示例,因此在了解该库的工作原理之后,我可以在大型数据集上使用它。

这是一个数据框。

dt = data.table(b=c('ford','honda','mercendes','ford','honda','mercendes'),
                co=c('blue','purple','yellow','bluef','purplef','yellowf'),
                mo=c(11230,13444,NaN,10000,10000,NaN),
                dates = c('2018-09-03','2018-09-03','2018-09-04','2018-09-04','2018-09-05','2018-09-05'))

我想按日期分组: 通常会这样做:

aggregate(dt$mo, by=list(dt$dates), sum)

     Group.1     x
1 2018-09-03 24674
2 2018-09-04   NaN
3 2018-09-05   NaN

但是如何在data.table中进行操作,以及是否需要每天,每周或每月显示?

1 个答案:

答案 0 :(得分:1)

加载数据

dt = data.table(b=c('ford','honda','mercendes','ford','honda','mercendes'),
                co=c('blue','purple','yellow','bluef','purplef','yellowf'),
                mo=c(11230,13444,NaN,10000,10000,NaN),
                dates = c('2018-09-03','2018-09-03','2018-09-04','2018-09-04','2018-09-05','2018-09-05'))

每周

dt[, .(count = .N), by = .(week = paste0(week(dates), "_", year(dates)))]

>       week count
> 1: 36_2018     6

每月

dt[, .(count = .N), by = .(month = paste0(month(dates), "_", year(dates)))]

>       month count
> 1: 9_2018     6

我建议添加“年(日期)”,以便您可以将一年中的周/月与另一年区分开。

希望有帮助