R:在提取了最大的当天数之后,如何从累积数据中计算2天持续时间的发生率?

R:在提取了最大的当天数之后,如何从累积数据中计算2天持续时间的发生率?,r,dataframe,max,extraction,R,Dataframe,Max,Extraction,我有一个像这样的累积数据 df1 <- data.frame(code=c(1,1,1,1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5), date=c("2020-01-01", "2020-01-01","2020-01-02","2020-01-03","2020-01-04","2020-01-01","2020-01-02","2020-01-03", "2020-

我有一个像这样的累积数据

df1 <- data.frame(code=c(1,1,1,1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5), 
                 date=c("2020-01-01", "2020-01-01","2020-01-02","2020-01-03","2020-01-04","2020-01-01","2020-01-02","2020-01-03",
                        "2020-01-04","2020-01-01","2020-01-01","2020-01-02","2020-01-02","2020-01-03","2020-01-04","2020-01-01",
                        "2020-01-02","2020-01-04","2020-01-03","2020-01-01","2020-01-02","2020-01-03","2020-01-04"),
                 cumulative=c(2,3,3,4,4,4,4,6,6,7,8,10,13,14,16,1,2,3,5,1,2,3,5))

df1这里有一种方法可以做到这一点,即创建每个备用行的组,并获得它们之间的
累积值的差值。要获得与所示格式相同的预期输出,我们可以使用
tidyr
中的
pivot\u wider

library(dplyr)
library(tidyr)

df2 %>%
  group_by(code) %>%
  group_by(gr = rep(seq(1, n()/2), 2), add = TRUE) %>%
  summarise(incidence = diff(cumulative)) %>%
  pivot_wider(names_from = gr, values_from = incidence, names_prefix = "incidence")

#  code incidence1 incidence2
#  <dbl>      <dbl>      <dbl>
#1     1          1          1
#2     2          2          2
#3     3          6          3
#4     4          2          3
#5     5          2          3
库(dplyr)
图书馆(tidyr)
df2%>%
分组人(代码)%>%
分组依据(gr=rep(seq(1,n()/2),2),add=TRUE)%>%
总结(发病率=差异(累积))%>%
枢轴宽度(名称\u from=gr,值\u from=Incident,名称\u前缀=“Incident”)
#代码事件1事件2
#              
#1     1          1          1
#2     2          2          2
#3     3          6          3
#4     4          2          3
#5     5          2          3

谢谢Ronak。这似乎适用于4天的数据,但我想计算更多的日期。你知道路吗?@tantan你怎么计算更多的日期?现在计算3-1、4-2日期的差异。下一个组合是什么?我的数据集有超过1个月的时间,所以实际上我想计算1-3,2-4,3-5,4-6等的差异。。。另外,您知道如何提取最大数(df1)吗→df2)?@tantan你能试试
df2%>%groupby(code)%%>%groupby(gr=rep(seq(1,n()/2),add=TRUE)%%>%summary(incident=list(diff(cummative))%%>%tidyr::unnest(incident)
@tantantantantan你能做
df1%>%groupby(code,date)%%>%summary(cummary=max(cummative))
df3 <- data.frame(code=c(1,2,3,4,5),
                  incidence1=c(1,2,6,2,2),incidence2=c(1,2,3,3,3))
library(dplyr)
library(tidyr)

df2 %>%
  group_by(code) %>%
  group_by(gr = rep(seq(1, n()/2), 2), add = TRUE) %>%
  summarise(incidence = diff(cumulative)) %>%
  pivot_wider(names_from = gr, values_from = incidence, names_prefix = "incidence")

#  code incidence1 incidence2
#  <dbl>      <dbl>      <dbl>
#1     1          1          1
#2     2          2          2
#3     3          6          3
#4     4          2          3
#5     5          2          3