【问题标题】:Filter groups in grouped R dataframe by their group-index按组索引过滤分组 R 数据框中的组
【发布时间】:2021-03-04 12:00:49
【问题描述】:

假设我有mtcars 数据框,我将观察结果按cyl 分组。现在我想选择属于第一组的所有观察。我不确定我该怎么做。我试过类似的东西:

mtcars %>% 
  group_by(cyl) %>% 
  slice_head(n=1)

但我认为这是我对每个组的第一次观察。相反,我想要第一组的所有观察结果。

【问题讨论】:

    标签: r dplyr group-by


    【解决方案1】:

    要获取第一组中的所有行,您可以使用cur_group_id() == 1

    library(dplyr)
    mtcars %>%  group_by(cyl) %>% filter(cur_group_id() == 1)
    
    #    mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
    #   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
    # 1  22.8     4 108      93  3.85  2.32  18.6     1     1     4     1
    # 2  24.4     4 147.     62  3.69  3.19  20       1     0     4     2
    # 3  22.8     4 141.     95  3.92  3.15  22.9     1     0     4     2
    # 4  32.4     4  78.7    66  4.08  2.2   19.5     1     1     4     1
    # 5  30.4     4  75.7    52  4.93  1.62  18.5     1     1     4     2
    # 6  33.9     4  71.1    65  4.22  1.84  19.9     1     1     4     1
    # 7  21.5     4 120.     97  3.7   2.46  20.0     1     0     3     1
    # 8  27.3     4  79      66  4.08  1.94  18.9     1     1     4     1
    # 9  26       4 120.     91  4.43  2.14  16.7     0     1     5     2
    #10  30.4     4  95.1   113  3.77  1.51  16.9     1     1     5     2
    #11  21.4     4 121     109  4.11  2.78  18.6     1     1     4     2
    

    请注意,输出与cyl 列中的第一个值不同。

    mtcars %>%  filter(cyl == first(cyl))
    
    #                mpg cyl  disp  hp drat    wt  qsec vs am gear carb
    #Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
    #Mazda RX4 Wag  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
    #Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
    #Valiant        18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
    #Merc 280       19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
    #Merc 280C      17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
    #Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
    

    【讨论】:

    • 你太棒了!非常感谢:)
    猜你喜欢
    • 2020-11-20
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多