R- 查找累积值

时间:2021-06-08 13:17:14

标签: r dplyr tidyverse

我有 COVID 数据。它给出了欧洲国家在某些日期的病例数和死亡数。我需要选择 10 个国家并通过画线显示第 1000 个确诊病例之后的病例。国家列在标题为国家的列下,标题为案例的列下的病例数,标题为死亡的列下的死亡人数以及标题为日期的列下的日期。问题是我不知道如何获得第 1000 个国家的确诊病例数以及此后的病例数。 这是问题:“c)自第 1000 个确诊病例以来,10 个国家/地区的累计病例数(按天计算)”

这是我的尝试代码:

library(utils)
COVID_data <-read.csv("https://opendata.ecdc.europa.eu/covid19/nationalcasedeath_eueea_daily_ei/csv", na.strings = "", fileEncoding = "UTF-8-BOM")


  above100th_cases <- ten_countries_cases %>% 
  filter(Cumulative_cases_Austria >= 1000|
           Cumulative_cases_Croatia >= 1000|
           Cumulative_cases_Denmark >= 1000|
           Cumulative_cases_Finland >= 1000|
           Cumulative_cases_France >= 1000|
           Cumulative_cases_Germany >= 1000|
           Cumulative_cases_Greece >= 1000|
           Cumulative_cases_Iceland >= 1000|
           Cumulative_cases_Italy >= 1000|
           Cumulative_cases_Spain >= 1000)
  
#Reshape the data set in order to draw line graphs 
above100th_case.m <- melt(above100th_cases,id.vars = 1)

# 0 values were below 100th, then skip these values to reach better graphs
above100th.m <- above100th_case.m %>% filter(value>0)
  
#Draw the graph by using ggplot
ggplot(above100th.m, aes(x=dateRep, y= value, color=variable))+
  geom_line(size=1)+
  #Arrange y axis, by considering min&max cumulative number of cases
  scale_y_continuous(breaks = c(seq(from =5000, to =9000000, by=1001000)))+
  labs(x="Date",
       y="Cumulative Case Number",
       title="The Cumulative Number of Cases By Date") +
  facet_wrap(~variable)+
  theme_bw()

这显然是错误的。我也尝试使用 filter(if() else) 或 when_case(),但我无法应用它们。 我希望,我可以解释一下自己。

1 个答案:

答案 0 :(得分:0)

这是必需的吗?

library(utils)
COVID_data <-read.csv("https://opendata.ecdc.europa.eu/covid19/nationalcasedeath_eueea_daily_ei/csv", na.strings = "", fileEncoding = "UTF-8-BOM")


library(tidyverse)
COVID_data %>% mutate(dateRep = as.Date(dateRep, '%d/%m/%Y')) %>%
  group_by(countriesAndTerritories) %>%
  arrange(dateRep) %>%
  mutate(cum_cases = cumsum(cases)) %>%
  filter(cum_cases >= 1000) %>%
  ungroup() %>%
  ggplot() +
  geom_line(aes(x = dateRep, y = cum_cases, color = countriesAndTerritories))


或者如果要过滤 10 个国家

ten_countries <- c('Denmark', 'Croatia', 'Austria', 'Finland', 'France', 'Germany', 'Greece', 'Iceland', 'Italy', 'Spain')

COVID_data %>% filter(countriesAndTerritories %in% ten_countries) %>%
  mutate(dateRep = as.Date(dateRep, '%d/%m/%Y')) %>%
  group_by(countriesAndTerritories) %>%
  arrange(dateRep) %>%
  mutate(cum_cases = cumsum(cases)) %>%
  filter(cum_cases >= 1000) %>%
  ungroup() %>%
  ggplot() +
  geom_line(aes(x = dateRep, y = cum_cases, color = countriesAndTerritories))

reprex package (v2.0.0) 于 2021 年 6 月 8 日创建