使用 R 的累积和

cumulative sum using R

我有一个这样的数据文件问题:金星和火星之间的总发生率(累计和)在什么日期超过 2000?

我创建了一个使用索引而不是日期列的简单示例:

df <- data.frame(country = c(rep("Mar",10), rep("Venus",10)), 
                 incidence = runif(20,0,30),
                 index=seq(1,20,1))

library(dplyr)
df %>% 
  group_by(country) %>%
  mutate(cumInc = cumsum(incidence)) %>% 
  filter(cumInc > 100) %>% 
  filter(index==min(index))

country incidence index cumInc
  <fct>       <dbl> <dbl>  <dbl>
1 Mar          29.2    10   108.
2 Venus        22.5    16   110.

您只需将 100 更改为您的阈值并将索引更改为日期,以便在累积和超过给定阈值时获得金星和三月的第一个日期。例如:

df %>% 
      group_by(country) %>%
      mutate(cumInc = cumsum(incidence)) %>% 
      filter(cumInc > **Your Threshold**) %>% 
      filter(date==min(date))

如果您想稍后获得 data.frame,只需添加 %>% as.data.frame()

如果你想保存你的信息,只需使用类似的东西:

result <- df %>% 
   group_by(...