我想计数所有唯一的ID的每一个日期在R,然而,我不知道我怎么能做到这一点。
目前,我有一个如下所示的数据集:
ID DateTime
2 2019-10-6
4 2019-10-6
3 2019-10-6
4 2019-10-6
3 2019-10-9
2 2019-10-9
2 2019-10-9从这里,我试图获得一个dataframe,以获得以下结果:
ID DateTime Count
2 2019-10-6 1
3 2019-10-6 1
4 2019-10-6 2
2 2019-10-9 2
3 2019-10-9 1然而,我尝试了许多使用聚合聚合函数的变体,但是每当我尝试它们时,我都会得到以下错误:
Error in UseMethod("summarise_") :
no applicable method for 'summarise_' applied to an object of class "Date" 我的R有点生疏,但我不知道如何做到这一点,搜索互联网也没有帮助。
提前感谢!
发布于 2019-10-28 18:09:22
使用dplyr的简单解决方案:
library(dplyr)
dates <- c("2019-10-6","2019-10-6","2019-10-6","2019-10-6","2019-10-9","2019-10-9","2019-10-9")
id <- c(2,4,3,4,3,2,2)
dat<-tibble(id,dates)
dat %>%
count(id,dates)发布于 2019-10-28 19:15:53
当然,这也可以用data.table的方式来完成
dt <- fread("ID DateTime
2 2019-10-6
4 2019-10-6
3 2019-10-6
4 2019-10-6
3 2019-10-9
2 2019-10-9
2 2019-10-9")
dt[, .( count = .N), by = .(ID, DateTime)][]
# ID DateTime count
# 1: 2 2019-10-6 1
# 2: 4 2019-10-6 2
# 3: 3 2019-10-6 1
# 4: 3 2019-10-9 1
# 5: 2 2019-10-9 2发布于 2019-10-28 18:23:26
aggregate并不难使用,只需记住,在下面的情况下,您需要聚合数据帧的行名。我强迫dates列为"Date"类。
dates <- as.Date(c("2019-10-6","2019-10-6","2019-10-6","2019-10-6","2019-10-9","2019-10-9","2019-10-9"))
id <- c(2,4,3,4,3,2,2)
dat<-data.frame(id,dates)
aggregate(row.names(dat) ~ id + dates, dat, length)
# id dates row.names(dat)
#1 2 2019-10-06 1
#2 3 2019-10-06 1
#3 4 2019-10-06 2
#4 2 2019-10-09 2
#5 3 2019-10-09 1https://stackoverflow.com/questions/58596186
复制相似问题