r-找到符合定义标准的第一个值



我有一个按天和国家划分的Coivd-19病例和死亡数据集。我希望找到每个国家第一次死亡的日期,并过滤掉之前的所有日子。你将如何在R/Tidyverse解决这个问题?

library(readxl)
library(httr)
url <- paste("https://www.ecdc.europa.eu/sites/default/files/documents/COVID-19-geographic-disbtribution-worldwide-",format(Sys.time(), "%Y-%m-%d"), ".xlsx", sep = "")
GET(url, authenticate(":", ":", type="ntlm"), write_disk(tf <- tempfile(fileext = ".xlsx")))
df <- read_excel(tf)

试试这个:

library(dplyr) 
# or library(tidyverse)
df %>%
arrange(`Countries and territories`, DateRep) %>%
group_by(`Countries and territories`) %>%
mutate(Cumulative_Death = cumsum(Deaths)) %>%
ungroup() %>%
filter(Cumulative_Death > 0) %>%
group_by(`Countries and territories`) %>%
mutate(First_Death_Date = min(DateRep)) 

它添加了新的列Cumulative_Death:截至DateRep的死亡总数和First_Death_Date:每个国家首次死亡的日期

library(dplyr)
df <- df %>% 
arrange(DateRep) %>% 
distinct(`Countries and territories`, .keep_all = TRUE)

我认为这对你来说是最简单的选择。dplyr::distinct()删除除第一行以外的所有行,因此如果按所需列排列数据,则只会得到第一个匹配项。.keep_all = TRUE将保留所有列,而不仅仅是distinct()中指定的列。