多因素列的摘要

时间:2015-10-29 16:12:23

标签: r dataframe reshape

我正在尝试汇总数据框的多个列,每个列包含具有相同级别的数据,以便更容易使用。

我从类似下面的数据框开始,其中各种各样的人对他们生活中的许多方面表示满意:

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)

enter image description here

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

enter image description here

我相信这将更容易在R中继续使用,对于excel中的其他用户。

我试图融合/转换数据并使用table()和count()函数,但我无法实现结果。

1 个答案:

答案 0 :(得分:4)

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