【问题标题】:last observed date最后观察日期
【发布时间】:2020-12-12 21:32:34
【问题描述】:

我需要为每个国家/地区创建最后观察日期的病例数表,并打印出病例数最多的前 5 个国家/地区的国家名称和病例数。

这是数据外观的示例:

    Country       Date Confirmed Recovered Deaths
1   Algeria 2020-01-22         0         0      0
2   Algeria 2020-01-23         0         0      0
3   Algeria 2020-01-24         0         0      0
4   Algeria 2020-01-25         0         0      0
5   Algeria 2020-01-26         0         0      0
6   Algeria 2020-01-27         0         0      0
7   Algeria 2020-01-28         0         0      0
8   Algeria 2020-01-29         0         0      0

(There are other countries as well)

更新:

所以我用它来按顺序获取日期和确诊病例,但我仍在努力只打印出前 5 个国家/地区:

by_country_top5 = Africa_covid %>% 
mutate(Date=as.Date(Date, '%m/%d/%Y')) %>% 
group_by(Country) %>% 
arrange(desc(Date),desc(Confirmed)) %>%
select(Country,Date,Confirmed)
by_country_top5

【问题讨论】:

    标签: r dplyr statistics


    【解决方案1】:

    如果您的数据框是 df 并且您的国家/地区列是 country,则案例称为 cases 并且日期列称为date

    library(dplyr)
     topDates = df$countries %>% 
                 unique %>% 
                   lapply(function(x){
                     df$date[df$countries == x,] %>% which.max
                   }) %>% unlist 
    
    Top5 = df[topDates,] %>% arrange(-date)
    Top5
    

    【讨论】:

      【解决方案2】:

      排序和分组后,可以使用slice取每个组的前n行,例如:

      set.seed(111)
      library(dplyr)
      Africa_covid = data.frame(
      Country=sample(letters[1:5],100,replace=TRUE),
      Date = sample(1:5,100,replace=TRUE),
      Confirmed = sample(20,100,replace=TRUE),
      Recovered_Deaths = sample(5,100,replace=TRUE)
      )
      
      by_country_top5 = Africa_covid %>% 
      group_by(Country) %>% 
      arrange(desc(Date),desc(Confirmed)) %>%
      slice(1:5) %>% 
      select(Country,Date,Confirmed)
      

      【讨论】:

        猜你喜欢
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-26
        • 1970-01-01
        • 2020-09-06
        • 2017-02-17
        • 1970-01-01
        相关资源
        最近更新 更多