我有一个带有时间戳和特定事件类型的CSV文件。
我想要的是在6分钟间隔内计算某些事件类型发生的次数。
输入数据如下:
我用这段代码加载并处理数据:
英译中:
我阅读了很多关于xts和zoo的示例,但某些方面我仍然无法理解。 输出数据应该长这样:
动物园的聚合函数看起来很有前途,我找到了这段代码片段:
现在我只是在想如何将其应用于我的使用案例。
尽管我很天真,但还是试了一下:
我必须承认我对R不是很有信心,但我会尝试。:-)
我有点迷茫。有人能指点一下我吗?
非常感谢!祝好,Alex。
这里是dput输出的我的数据的一个小子集。数据本身大约有8000万行。
输入数据如下:
date,type
"Sep 22, 2011 12:54:53.081240000","2"
"Sep 22, 2011 12:54:53.083493000","2"
"Sep 22, 2011 12:54:53.084025000","2"
"Sep 22, 2011 12:54:53.086493000","2"
我用这段代码加载并处理数据:
> raw_data <- read.csv('input.csv')
> cured_dates <- c(strptime(raw_data$date, '%b %d, %Y %H:%M:%S', tz="CEST"))
> cured_data <- data.frame(cured_dates, c(raw_data$type))
> colnames(cured_data) <- c('date', 'type')
英译中:
处理后的数据如下:
> head(cured_data)
date type
1 2011-09-22 14:54:53 2
2 2011-09-22 14:54:53 2
3 2011-09-22 14:54:53 2
4 2011-09-22 14:54:53 2
5 2011-09-22 14:54:53 1
6 2011-09-22 14:54:53 1
我阅读了很多关于xts和zoo的示例,但某些方面我仍然无法理解。 输出数据应该长这样:
date type count
2011-09-22 14:54:00 CEST 1 11
2011-09-22 14:54:00 CEST 2 19
2011-09-22 15:00:00 CEST 1 9
2011-09-22 15:00:00 CEST 2 12
2011-09-22 15:06:00 CEST 1 23
2011-09-22 15:06:00 CEST 2 18
动物园的聚合函数看起来很有前途,我找到了这段代码片段:
# aggregate POSIXct seconds data every 10 minutes
tt <- seq(10, 2000, 10)
x <- zoo(tt, structure(tt, class = c("POSIXt", "POSIXct")))
aggregate(x, time(x) - as.numeric(time(x)) %% 600, mean)
现在我只是在想如何将其应用于我的使用案例。
尽管我很天真,但还是试了一下:
> zoo_data <- zoo(cured_data$type, structure(cured_data$time, class = c("POSIXt", "POSIXct")))
> aggr_data = aggregate(zoo_data$type, time(zoo_data$time), - as.numeric(time(zoo_data$time)) %% 360, count)
Error in `$.zoo`(zoo_data, type) : not possible for univariate zoo series
我必须承认我对R不是很有信心,但我会尝试。:-)
我有点迷茫。有人能指点一下我吗?
非常感谢!祝好,Alex。
这里是dput输出的我的数据的一个小子集。数据本身大约有8000万行。
structure(list(date = structure(c(1316697885, 1316697885, 1316697885,
1316697885, 1316697885, 1316697885, 1316697885, 1316697885, 1316697885,
1316697885, 1316697885, 1316697885, 1316697885, 1316697885, 1316697885,
1316697885, 1316697885, 1316697885, 1316697885, 1316697885, 1316697885,
1316697885, 1316697885), class = c("POSIXct", "POSIXt"), tzone = ""),
type = c(2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L,
1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 2L)), .Names = c("date",
"type"), row.names = c(NA, -23L), class = "data.frame")