【发布时间】:2015-09-04 09:53:11
【问题描述】:
我有一个按类别分组的公司数据集。一些公司有多个类别,可以在多个列中重复。我想知道如何根据类别(例如每个类别的平均值)来分析它们。这是一个示例 data.frame
a <- factor(c("cat1", "cat2", "cat3", "cat4", "cat2"))
b <- factor(c("cat5", "cat4", "cat2", "cat1", "NA"))
comp <- factor(c("company1", "company2", "company3", "company4","company5"))
score <- c(1, -1, 2, -2, 1.5)
df <- data.frame(a, b, comp, score)
# a b comp score
#1 cat1 cat5 company1 1.0
#2 cat2 cat4 company2 -1.0
#3 cat3 cat2 company3 2.0
#4 cat4 cat1 company4 -2.0
#5 cat2 NA company5 1.5
我想知道的一项任务是每个类别的平均值。通过查看这个简单的数据集,我知道 cat1 的平均值为 -0.5。我有一些粗略的方法,但在任务中没有任何后续:
我考虑过将 melt 应用于 data.frame,以便类别因子的每个实例都有自己的行(在这种情况下,维度将为 10x1,每行的每个类别分数对) .
-
我还考虑过使用 dplyr 并按唯一名称进行分组,例如
mynames <- unique(c(levels(a), levels(b)))
但是,dplyr 需要将分组作为 data.frame 中的一个向量(除非有某种方法可以按我不知道的模式或因子级别进行分组,这会很棒!)
- 最后,我可能不需要制作单独的数据框。也许有一种方法可以使用 apply 将函数(例如均值)应用于唯一的类别级别。
感谢您的帮助!
【问题讨论】:
-
您是否担心在实际数据集上融合为长格式会花费太长时间?看起来这个任务在长格式数据集上真的很容易......
标签: r