【问题标题】:Filter rows with earlier date than a row specified by another variable筛选日期早于另一个变量指定的行的行
【发布时间】:2019-05-14 06:05:13
【问题描述】:

仅当 Med 0 出现在早于 Med =1 的日期时,我想过滤所有 Med = 0(按 ID 分组)。如何使用 dplyr、base r 或其他包来完成。

df <- read.table(header = TRUE, text = "
              ID  Med  date        
               1  0     2006-01-01 
               1  0     2006-02-02 
               1  1     2006-06-02 
               1  0     2006-08-02 
               1  2     2007-12-01
               2  0     2003-01-01 
               2  1     2003-02-02 
               2  3     2003-06-02 
               2  0     2003-08-02 
               2  8     2007-12-01 
               3  1     2007-04-20 
               ",stringsAsFactors=FALSE)

【问题讨论】:

    标签: r filter dplyr slice


    【解决方案1】:

    使用dplyr,您可以通过date 选择group_by IDarrange 并选择Med == 1 之前的行

    library(dplyr)
    
    df %>%
       group_by(ID) %>%
       arrange(date) %>%
       filter(cumsum(Med == 1) == 0 & Med == 0)
    
    
    #     ID   Med date      
    #  <int> <int> <chr>     
    #1     1     0 2006-01-01
    #2     1     0 2006-02-02
    #3     2     0 2003-01-01
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多