R 按天和小时获取数据的聚合和
下面是我拥有的数据示例R 按天和小时获取数据的聚合和,r,aggregate,compound-key,R,Aggregate,Compound Key,下面是我拥有的数据示例 date time size filename day.of.week 1 2015-01-16 5:36:12 1577 01162015053400.xml Friday 2 2015-01-16 5:38:09 2900 01162015053600.xml Friday 3 2015-01-16 5:40:09 3130 01162015053800.xml Frid
date time size filename day.of.week
1 2015-01-16 5:36:12 1577 01162015053400.xml Friday
2 2015-01-16 5:38:09 2900 01162015053600.xml Friday
3 2015-01-16 5:40:09 3130 01162015053800.xml Friday
我想做的是总结每小时的文件大小
我想要一个如下所示的结果数据表:
date hour size
2015-01-16 5 7607
2015-01-16 6 10000
等等等等
但我似乎不能得到我需要的输出
我尝试了ddply和AGGRATE,但我总结了一整天,我不知道如何在时间栏中按小时细分
我有好几天的数据。所以这不仅仅是为了那一天。从那天开始,几乎每天都是,直到昨天
谢谢 使用化合物
分组(天、小时)
这样就可以了。假设您的示例数据存储在名为“test”的数据框中,那么下面的步骤就可以了:
library(lubridate)#用于hms和小时功能
test$time%#dplyr由于某些原因不喜欢此列
分组依据(日期、小时)%>%
总结(大小=总和(大小))
您可以使用数据表
library(data.table)
# Define a time stamp column.
dt[, timestamp=as.POSIXct(strptime(paste(df$date, df$time), format = "%Y-%m-%d %H:%M:%S"))]
# Aggregate by hours
dt[, size = .N, by = as.POSIXct(round(timestamp, "hour"))]
好处是数据。表的速度非常快 如果在
(类似于前面的答案,即,df$,当我认为可以的时候,但时间列是一个因子,我找不到一种方法将因子转换为时间,只转换为日期时间。我需要将日期和时间列组合在一起,并将它们转换为DateTime类吗?您不一定需要组合它们,但这是一种可行的方法。Se在这个问题上有很多重复的问题,它已经被问了很多次了,这一点都不好笑。请指出并标记为重复。这对网站来说比再次回答同一个问题更有用。@Benjamin:它确实提供了一个问题的答案。关键部分是一个由表达式组成的复合组。请再次阅读。如果操作蚂蚁想问一个后续问题(“但我不想用一个复合的group_来表达……如何转换成一个统一的datetime字段”),这是他们的问题。你在这个问题上偏离了方向。这不是问的问题。我回答了问的问题。我们不会重复没有问的问题。我认为这个答案是正确的(现在)没有帮助,因为它非常不完整:原始数据帧既没有天
,也没有小时
。我的数据帧称为s3_文件。当我将所有测试实例更改为s3_文件并运行此操作时,我得到一个返回的数字,1220046076。我相信这是所有文件的总和。不是按小时计算的。或者a)你(在这种情况下,我推荐dplyr)或者b)你。不管怎样,这都是一个副本。一旦你澄清了你喜欢哪一个,这应该作为副本关闭。我的建议是dplyr,通过表达式使用复合组_,它的性能和干净性。我不知道round(timestamp,“hour”)
(我的问题缺少的链接)。
library(data.table)
# Define a time stamp column.
dt[, timestamp=as.POSIXct(strptime(paste(df$date, df$time), format = "%Y-%m-%d %H:%M:%S"))]
# Aggregate by hours
dt[, size = .N, by = as.POSIXct(round(timestamp, "hour"))]
aggregate(df[c("size")], FUN=sum, by=list(d=as.POSIXct(trunc(df$when, "hour"))))