首页 > 解决方案 > dplyr 未正确分组或使用先前组中的数据

问题描述

我正在处理有关冠状病毒感染的 JHU 数据,并且正在尝试按组计算新病例(和死亡人数)。这是代码:

base <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-"
world.confirmed <- read.csv(paste0(base,"Confirmed.csv"), sep=',', head=T)
world.confirmed <- gather( world.confirmed, Date, Cases, X1.22.20:X3.21.20)

world.deaths <- read.csv(paste0(base,"Deaths.csv"), sep=',', head=T)
world.deaths <- gather(world.deaths, Date, Deaths, X1.22.20:X3.21.20)

world.data <- merge(world.confirmed, world.deaths, 
                 by=c("Province.State","Country.Region","Lat", "Long", "Date"))

world.data$Date <- as.Date(world.data$Date, "X%m.%d.%y")
world.data <- world.data %>% 
    group_by(Province.State,Country.Region,Date) %>%
    arrange(Province.State, Country.Region, as.Date(Date))

按照SO 中这个问题的解决方案,我尝试使用以下方法按组计算差异:

world.data <- world.data %>% 
   group_by(Lat,Long) %>% 
   mutate(New.Cases = Cases - lag(Cases))

但是,这不起作用;任何其他分组也没有。以下是两个第一国之间边界的结果:

阿尔巴尼亚第一元素的价值

我也尝试过插入一个arrange阶段,甚至尝试将组的第一个元素归零。同样的问题。任何想法?

更新我正在使用 R 3.4.4 和 dplyr_0.8.5

标签: rdplyr

解决方案


可能,这可能会有所帮助:

library(dplyr)

world.data %>%
  mutate(Date = as.Date(Date, "X%m.%d.%y")) %>% 
  arrange(Country.Region, Lat, Long, Date) %>%
  group_by(Country.Region, Lat, Long) %>%
  mutate(New_Cases = Cases - lag(Cases), 
         New_deaths = Deaths - lag(Deaths)) 

我们arrange根据 的数据Date,并通过将New_Cases今天的病例与昨天的病例相减来找到每个Country死亡病例。


推荐阅读