簡體   English   中英

按組索引過濾分組 R dataframe 中的組

[英]Filter groups in grouped R dataframe by their group-index

假設我有mtcars dataframe 並且我將觀察結果按cyl分組。 現在我想 select 所有屬於第一組的觀察。 我不確定我該怎么做。 我試過類似的東西:

mtcars %>% 
  group_by(cyl) %>% 
  slice_head(n=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

請注意,output 與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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM