【发布时间】:2020-08-15 22:37:18
【问题描述】:
我有一些国家/地区的 covid-19 病例的累积数据,我正在尝试计算一个名为 Diff 的新列中的差异。我无法删除 NA 值,因为它不会显示没有进行测试的日期。所以我已经做到了,如果有一个 NA 值,将 Diff 值设置为 0 以表示没有差异,因此当天没有进行任何测试。
我也在尝试发表声明,如果 Diff 也是 NA,表示前一天没有进行任何测试,那么将差异设置为当天的确诊病例值。
正如您从底部的结果中看到的那样,我快到了,但我正在创建一个名为 ifelse 的新列。我试图解决这个问题,但我认为我在某处犯了一个简单的错误。如果有人能指出来,我将不胜感激,谢谢。
编辑:当延迟计算 = NA 时,我意识到我在考虑将每日病例设置为确诊病例时犯了一个逻辑错误,因为这给出了一个误导性的答案。
我在大型数据集上使用下面的代码来填充并在出现 NA 时重复之前的值。我按组过滤,以免简单地跨国家传播正向值。
然后我计算了延迟,然后使用 Ronak Shah 的代码获取每日值。
data <- data %>%
group_by(CountryName) %>%
fill(ConfirmedCases, .direction = "down")
data <- data %>%
mutate(lag1 = ConfirmedCases - lag(ConfirmedCases))
data <- data %>% mutate(DailyCases = replace_na(coalesce(lag1, ConfirmedCases), 0))
library(tidyverse)
data <- data.frame(
stringsAsFactors = FALSE,
CountryName = c("Afghanistan","Afghanistan",
"Afghanistan","Afghanistan","Afghanistan",
"Afghanistan","Afghanistan",
"Afghanistan","Afghanistan","Afghanistan",
"Afghanistan","Afghanistan","Afghanistan",
"Afghanistan","Afghanistan",
"Afghanistan","Afghanistan","Afghanistan",
"Afghanistan","Afghanistan","Afghanistan",
"Afghanistan","Afghanistan",
"Afghanistan","Afghanistan","Afghanistan",
"Afghanistan","Afghanistan","Afghanistan",
"Afghanistan","Afghanistan"),
ConfirmedCases = c(NA,7L,NA,NA,NA,10L,16L,21L,
22L,22L,22L,24L,24L,34L,40L,42L,
75L,75L,91L,106L,114L,141L,166L,
192L,235L,235L,270L,299L,337L,367L,
423L),
Diff = c(NA,NA,NA,NA,NA,NA,6L,5L,1L,
0L,0L,2L,0L,10L,6L,2L,33L,0L,16L,
15L,8L,27L,25L,26L,43L,0L,35L,
29L,38L,30L,56L)
)
data2 <- data %>%
mutate(Diff = ifelse(is.na(ConfirmedCases) == TRUE, 0, ConfirmedCases - lag(ConfirmedCases)),
ifelse(is.na((ConfirmedCases - lag(ConfirmedCases))) == TRUE, ConfirmedCases, ConfirmedCases - lag(ConfirmedCases)))
head(data2, 10)
#> CountryName ConfirmedCases Diff ifelse(...)
#> 1 Afghanistan NA 0 NA
#> 2 Afghanistan 7 NA 7
#> 3 Afghanistan NA 0 NA
#> 4 Afghanistan NA 0 NA
#> 5 Afghanistan NA 0 NA
#> 6 Afghanistan 10 NA 10
#> 7 Afghanistan 16 6 6
#> 8 Afghanistan 21 5 5
#> 9 Afghanistan 22 1 1
#> 10 Afghanistan 22 0 0
由reprex package (v0.3.0) 于 2020-08-15 创建
【问题讨论】:
标签: r if-statement tidyverse dplyr