这里有一个 data.table
选项,我们可以使用 grepl
(也可以使用 stringr
)来忽略任何包含 Category
中数字的行,然后使用 .N
进行计数。
library(data.table)
setDT(dt)[!grepl("\\d", Category), .N, .(Category, DateTime)]
输出
Category DateTime N
1: A 2022-08-29 00:00:00 2
2: B 2022-08-29 00:00:00 3
3: A 2022-08-29 02:00:00 1
4: B 2022-08-29 02:00:00 3
数据
dt <- structure(list(Category = c("A", "A", "A 1", "A 1", "A 1", "B",
"B", "B", "B 1", "B 1", "B 1", "B 1", "B 1", "A", "A 1", "B",
"B", "B", "B 1", "B 1", "B 1"), DateTime = c("2022-08-29 00:00:00",
"2022-08-29 00:00:00", "2022-08-29 00:00:00", "2022-08-29 00:00:00",
"2022-08-29 00:00:00", "2022-08-29 00:00:00", "2022-08-29 00:00:00",
"2022-08-29 00:00:00", "2022-08-29 00:00:00", "2022-08-29 00:00:00",
"2022-08-29 00:00:00", "2022-08-29 00:00:00", "2022-08-29 00:00:00",
"2022-08-29 02:00:00", "2022-08-29 02:00:00", "2022-08-29 02:00:00",
"2022-08-29 02:00:00", "2022-08-29 02:00:00", "2022-08-29 02:00:00",
"2022-08-29 02:00:00", "2022-08-29 02:00:00")), class = "data.frame", row.names = c(NA,
-21L))
aggregate(count ~ Category + DateTime, data = _, length)
可以替换为aggregate(count ~ ., data = _, length)
。 - GKi