在 R 中,基于分类变量从数据帧中提取 n 行的子集

Subset n number of rows from a dataframe, based on a categorical variable, in R

我在 R 中有一个数据框(比如 x):

> x
Height  Weight Gender
5     60    m
5     70    m
6     80    m
4     90    m
4     60    m
5     70    f
5     80    f
6     60    f
4     90    f
4     60    f

我需要一个 R 代码来生成一个新的数据框,比如 y,它按性别获取 X 的子集,并且只获取每个性别的前三行 (1:3),以给出如下结果。

>y
Height  Weight Gender
5       60      m
5       70      m
6       80      m
5       70      f
5       80      f
6       60      f

dplyr

开始尝试 slice
library(dplyr)
x %>%
    group_by(Gender) %>% 
    slice(1:3)

或使用data.table

library(data.table)
setDT(x)[,.SD[1:3] , Gender]

试试by

do.call(rbind, by(X, X$Gender, head, 3))