Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何确定在给定时间段内出现多少指数的计数?_R - Fatal编程技术网

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

我在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(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