代码之家  ›  专栏  ›  技术社区  ›  Economist_Ayahuasca

根据id和r中的日期对第一次观察进行分组

  •  0
  • Economist_Ayahuasca  · 技术社区  · 3 年前

    df =
    id date Observation
    1  3    A
    1  2    B
    1  8    B
    2  5    B
    2  3    A
    2  9    A
    

    结果应该是这样的:

    df =
    id date Observation
    1  3    A
    1  2    B
    2  5    B
    2  3    A
    

    谢谢

    2 回复  |  直到 3 年前
        1
  •  2
  •   csgroen    3 年前

    dplyr 通过分组然后切片:

    library(tidyverse)
    df <- read_table("id date Observation
    1  3    A
    1  2    B
    1  8    B
    2  5    B
    2  3    A
    2  9    A")
    
    df %>%
        group_by(id, Observation) %>%
        slice(1)
    #> # A tibble: 4 x 3
    #> # Groups:   id, Observation [4]
    #>      id  date Observation
    #>   <dbl> <dbl> <chr>      
    #> 1     1     3 A          
    #> 2     1     2 B          
    #> 3     2     3 A          
    #> 4     2     5 B
    

    于2021-04-12由 reprex package

        2
  •  2
  •   LMc    3 年前
    library(dplyr)
    
    df %>% 
      group_by(id, Observation) %>% 
      slice(1) %>% 
      ungroup()
    
    # OR
    
    df %>% 
      group_by(id, Observation) %>% 
      filter(row_number() == 1) %>%
      ungroup()