【问题标题】:Find the name of the column with the minimum date using dplyr使用 dplyr 查找具有最小日期的列的名称
【发布时间】:2019-03-26 23:48:45
【问题描述】:

我有以下数据框,我想找到每个Id的最小日期列的名称。

id   a_date       b_date         c_date        d_date     
1    2014-01-01   2014-01-05     2014-01-15    NA                   
2    2017-02-01   NA             NA            2015-03-01               

这是:

df <- tibble(id = c(1, 2),
             a_date = c("01/01/14", "01/02/17"),
             b_date = c("05/01/14", NA),
             c_date = c("15/01/14", NA),
             d_date = c(NA, "01/03/15"))

我试过了,但是没有用

df  %>% group_by(id) %>% 
  mutate( min = pmin(a_date, b_date, c_date, d_date ,na.rm=TRUE) %>% 
  mutate(col_name = which(colnames(df)== min)

预期输出如下

id   col_name    
1    a_date                 
2    d_date

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    这个怎么样?

    df %>% 
      gather(key, date, -id) %>% 
      filter(!is.na(date)) %>% 
      mutate(date = dmy(date)) %>% 
      group_by(id) %>% 
      arrange(date) %>% 
      slice(1)
    

    它产生这个输出:

    # A tibble: 2 x 3
    # Groups:   id [2]
         id key    date      
      <dbl> <chr>  <date>    
    1     1 a_date 2014-01-01
    2     2 d_date 2015-03-01
    

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多