R 如何确定在给定时间段内出现多少指数的计数?
我在R中有一个数据帧,它看起来像:R 如何确定在给定时间段内出现多少指数的计数?,r,R,我在R中有一个数据帧,它看起来像: ID <- c(1,1,1,2,2,3,3) times <- c("2021-02-01", "2021-02-02", "2021-02-05","2021-02-01","2021-02-02", "2021-02-05", "2021-02-09") dat <- data.frame(ti
ID <- c(1,1,1,2,2,3,3)
times <- c("2021-02-01", "2021-02-02", "2021-02-05","2021-02-01","2021-02-02", "2021-02-05", "2021-02-09")
dat <- data.frame(times=times, ID=ID)
> dat
times ID
1 2021-02-01 1
2 2021-02-02 1
3 2021-02-05 1
4 2021-02-01 2
5 2021-02-02 2
6 2021-02-05 3
7 2021-02-09 3
有没有办法通过
数据表
或dplyr
来实现这一点?谢谢。dplyr
方法:
library(dplyr)
dat %>%
mutate(times1 = as.Date(times),
times = factor(times)) %>%
arrange(ID, times1) %>%
group_by(ID) %>%
filter(lead(times1) - times1 == 1) %>%
ungroup %>%
count(times, .drop = FALSE) %>%
mutate(times = as.Date(times))
# times n
# <date> <int>
#1 2021-02-01 2
#2 2021-02-02 0
#3 2021-02-05 0
#4 2021-02-09 0
库(dplyr)
dat%>%
突变(times1=截止日期(times),
次数=系数(次))%>%
安排(ID,时间1)%>%
分组依据(ID)%>%
过滤器(前置时间(时间1)-时间1==1)%>%
解组%>%
计数(次数,.drop=FALSE)%>%
突变(时间=截止日期(时间))
#泰晤士报
#
#1 2021-02-01 2
#2 2021-02-02 0
#3 2021-02-05 0
#4 2021-02-09 0
对于每个ID
仅保留日期之间相差1天的行,并计算此类日期的数量
library(dplyr)
dat %>%
mutate(times1 = as.Date(times),
times = factor(times)) %>%
arrange(ID, times1) %>%
group_by(ID) %>%
filter(lead(times1) - times1 == 1) %>%
ungroup %>%
count(times, .drop = FALSE) %>%
mutate(times = as.Date(times))
# times n
# <date> <int>
#1 2021-02-01 2
#2 2021-02-02 0
#3 2021-02-05 0
#4 2021-02-09 0