【问题标题】:Summary of multiple factored columns [duplicate]多个因子列的摘要[重复]
【发布时间】:2015-10-29 16:12:22
【问题描述】:

我正在尝试将数据框中的多个列汇总为更易于使用的格式,每个列都包含具有相同级别的数据。

我从一个类似于下面的数据框开始,其中不同的人记录了他们对生活的许多方面的满意度:

person=as.factor(c("Jack","Jack","John","Jill"))
job=as.factor(c("happy","sad","very happy","sad"))
home=as.factor(c("happy","sad","very happy","happy"))
car=as.factor(c("happy","sad","sad","happy"))

df<-data.frame(person,job,home,car)

我希望将其转换为以下格式:

我相信这将更容易在 R 中使用,对于 excel 中的其他用户来说也是如此。

我曾尝试融化/转换数据并使用 table() 和 count() 函数,但我无法达到结果。

【问题讨论】:

    标签: r dataframe reshape


    【解决方案1】:

    感觉像是一个骗局,但这里尝试使用 reshape2::recast,它只是一个 melt/dcast 包装器

    library(reshape2)
    recast(df, variable ~ value, id.var = 1L)
    # Aggregation function missing: defaulting to length
    #   variable happy sad very happy
    # 1      job     1   2          1
    # 2     home     2   1          1
    # 3      car     2   2          0
    

    或者如果数据很大,我们也可以实现data.table等价

    library(data.table)
    dcast(melt(setDT(df), 1L), variable ~ value)
    # Aggregate function missing, defaulting to 'length'
    #    variable happy sad very happy
    # 1:      job     1   2          1
    # 2:     home     2   1          1
    # 3:      car     2   2          0
    

    在这两种方法中,您都可以为不同的聚合函数指定 fun.aggregate =

    【讨论】:

    • 谢谢 - 这正好回答了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2019-09-16
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多