根据R中的分类变量,从数据框中子集n行数

gg-*_*-14 5 r rows subset

我在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
Run Code Online (Sandbox Code Playgroud)

我需要一个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
Run Code Online (Sandbox Code Playgroud)

akr*_*run 4

尝试slicedplyr

library(dplyr)
x %>%
    group_by(Gender) %>% 
    slice(1:3)
Run Code Online (Sandbox Code Playgroud)

或者使用data.table

library(data.table)
setDT(x)[,.SD[1:3] , Gender]
Run Code Online (Sandbox Code Playgroud)