多因素列的摘要

Summary of multiple factored columns

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

我从一个类似于下面的数据框开始,在这个数据框中,不同的人对他们生活的许多方面都表示满意:

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 中的其他用户。

我已尝试 melt/cast 数据并使用 table() 和 count() 函数,但我无法获得结果。

感觉像是一个骗局,但这是使用 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 =