如何计算 R 中过去几个小时的相同分类?

How to count same categorical from past hours in R?

我有这个数据集。

df <- data.frame(c("Attribute1", "Attribute1", "Attribute1", "Attribute2", "Attribute2"),
                 c("2018-11-01 00:00:19", "2018-11-01 00:00:54", "2018-11-01 00:01:17",
                   "2018-11-01 00:01:23", "2018-11-01 00:01:25"))
names(df) <- c("Signature", "date")
df$date <- as.POSIXct(df$date)

我想知道如何在 R 编程中计算过去 1 小时内的相同属性,这将是我想要的结果:

然后 Count_Signature 将计算过去一小时内有多少 "Attribute 1" 等等。

谢谢

这里有一个解决方案。我利用 data.table 是因为它具有一些不错的时间功能,并且在分组计算方面表现出色。我创建了一个时间索引,根据年、年日和按小时分箱进行折叠。如果您打算根据系统时间以外的 R 编程的 "last hour" 进行分组,则需要修改此项。那样的话,Sys.time()可以成为你的朋友。

无论如何,这是解决方案:

df <- data.frame(c("Attribute1", "Attribute1", "Attribute1", "Attribute2", "Attribute2"),
                 c("2018-11-01 00:00:19", "2018-11-01 00:00:54", "2018-11-01 00:01:17",
                   "2018-11-01 00:01:23", "2018-11-01 00:01:25"))
names(df) <- c("Signature", "date")
df$date <- as.POSIXct(df$date)

library(data.table)
dt <- setDT(df)
dt[, time_idx := paste0(year(date), "-", yday(date), "-", hour(date))]
dt[, Count_Signature := (1L:.N) - 1L, keyby = .(Signature, time_idx)]
dt
#>     Signature                date   time_idx Count_Signature
#> 1: Attribute1 2018-11-01 00:00:19 2018-305-0               0
#> 2: Attribute1 2018-11-01 00:00:54 2018-305-0               1
#> 3: Attribute1 2018-11-01 00:01:17 2018-305-0               2
#> 4: Attribute2 2018-11-01 00:01:23 2018-305-0               0
#> 5: Attribute2 2018-11-01 00:01:25 2018-305-0               1

reprex package (v0.2.1)

于 2019-01-03 创建