【问题标题】:Subset n number of rows from a dataframe, based on a categorical variable, in R在 R 中,基于分类变量,从数据帧中子集 n 行数
【发布时间】:2015-04-22 16:20:50
【问题描述】:

我在 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

【问题讨论】:

    标签: r rows subset


    【解决方案1】:

    dplyr 尝试slice

    library(dplyr)
    x %>%
        group_by(Gender) %>% 
        slice(1:3)
    

    或者使用data.table

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

    【讨论】:

    • 我试过这两个包。他们都正确地给出了结果。我最喜欢 dplyr 的格式。
    【解决方案2】:

    试试by

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

    【讨论】:

    • 这是获得所需结果的最快方法,无需安装包。
    猜你喜欢
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2012-11-17
    • 2013-04-02
    • 1970-01-01
    相关资源
    最近更新 更多