【发布时间】:2016-04-07 20:08:45
【问题描述】:
我正在尝试创建一个表格,通过另一个变量汇总几个分类变量(使用频率和比例)。我想使用 dplyr 包来做到这一点。
这些以前的 Stack Overflow 讨论部分包含了我正在寻找的内容: Relative frequencies / proportions with dplyr 和 Calculate relative frequency for a certain group。
使用 mtcars 数据集,如果我只想查看 gear 与 am 类别的比例,这就是输出的样子:
mtcars %>%
group_by(am, gear) %>%
summarise (n = n()) %>%
mutate(freq = n / sum(n))
# am gear n freq
# 1 0 3 15 0.7894737
# 2 0 4 4 0.2105263
# 3 1 4 8 0.6153846
# 4 1 5 5 0.3846154
但是,我实际上不仅想查看am 的gears,还希望在同一张表中分别查看am 的carb 和am 的cyl。如果我将代码修改为:
mtcars %>%
group_by (am, gear, carb, cyl) %>%
summarise (n = n()) %>%
mutate(freq = n / sum(n))
我得到am、gear、carb 和cyl 的每个组合的频率。这不是我想要的。有没有办法用 dplyr 做到这一点?
编辑
此外,如果有人知道生成我想要的表格的方法,但将am 的类别作为列(如经典的 2x2 表格格式),那将是一个额外的好处。这是我所指的一个例子。它来自我以前的出版物之一。我想在 R 中生成这个表格,这样我就可以使用 RMarkdown 将它直接输出到 Word 文档中:
【问题讨论】:
-
是否有理由必须在 dplyr 中完成?并且“组”之一总是相同的吗? (这里是
am) -
你能举一个你想要的表格的例子吗?进行一些重塑当然是可能的,但我不确定你在追求什么。
-
没有非常重要的原因必须在 dplyr 中完成,除了我正在努力学习该软件包,以便我有一个一致的方法可用于生成我的表格。 dplyr 的另一个驱动原因是它生成一个数据框作为输出,这使我可以使用 stargazer 包来生成值得发表的表格,然后我可以使用 RMarkdown 将其输出到 Word 文档。当然,我对其他人认为更适合这样做的替代方法持开放态度。
-
我也有类似的问题。 @RNB 你最后是怎么建表的?