按组别汇总的比例
Summary of proportions by group
用来按子组计算比例的最佳 tool/package 是什么?我想我可以尝试这样的事情:
data(mtcars)
library(plyr)
ddply(mtcars, .(cyl), transform, Pct = gear/length(gear))
但输出不是我想要的,因为我想要行数等于 cyl
的东西。即使将其更改为 summarise
我仍然会遇到同样的问题。
我对其他软件包持开放态度,但我认为 plyr
最好,因为我最终想围绕它构建一个函数。有什么想法吗?
如果能帮助解决像这样的基本问题,我将不胜感激。
library(dplyr)
mtcars %>%
count(cyl, gear) %>%
mutate(prop = prop.table(n))
请参见 ?count
,基本上,count
是 summarise
和 n()
的包装器,但它会为您进行分组。看看 mtcars %>% count(cyl, gear)
的输出。然后,我们添加一个带有 mutate
的附加变量,名为 prop
,这是对我们在 count(cyl, gear)
之后创建的 n
变量调用 prop.table()
的结果.
您可以使用 count()
的 SE
版本将其创建为函数,即 count_()
。查看dplyr
包中的vignette
for Non-Standard Evaluation
。
这是一个很好的 github gist 解决许多交叉表变体与 dplyr
和其他包。
获取组内频率:
library(dplyr)
mtcars %>% count(cyl, gear) %>% mutate(Freq = n/sum(n))
# Source: local data frame [8 x 4]
# Groups: cyl [3]
#
# cyl gear n Freq
# (dbl) (dbl) (int) (dbl)
# 1 4 3 1 0.09090909
# 2 4 4 8 0.72727273
# 3 4 5 2 0.18181818
# 4 6 3 2 0.28571429
# 5 6 4 4 0.57142857
# 6 6 5 1 0.14285714
# 7 8 3 12 0.85714286
# 8 8 5 2 0.14285714
或等价地,
mtcars %>% group_by(cyl, gear) %>% summarise(n = n()) %>% mutate(Freq = n/sum(n))
注意每个阶段的分组情况,否则你的号码会掉线
用来按子组计算比例的最佳 tool/package 是什么?我想我可以尝试这样的事情:
data(mtcars)
library(plyr)
ddply(mtcars, .(cyl), transform, Pct = gear/length(gear))
但输出不是我想要的,因为我想要行数等于 cyl
的东西。即使将其更改为 summarise
我仍然会遇到同样的问题。
我对其他软件包持开放态度,但我认为 plyr
最好,因为我最终想围绕它构建一个函数。有什么想法吗?
如果能帮助解决像这样的基本问题,我将不胜感激。
library(dplyr)
mtcars %>%
count(cyl, gear) %>%
mutate(prop = prop.table(n))
请参见 ?count
,基本上,count
是 summarise
和 n()
的包装器,但它会为您进行分组。看看 mtcars %>% count(cyl, gear)
的输出。然后,我们添加一个带有 mutate
的附加变量,名为 prop
,这是对我们在 count(cyl, gear)
之后创建的 n
变量调用 prop.table()
的结果.
您可以使用 count()
的 SE
版本将其创建为函数,即 count_()
。查看dplyr
包中的vignette
for Non-Standard Evaluation
。
这是一个很好的 github gist 解决许多交叉表变体与 dplyr
和其他包。
获取组内频率:
library(dplyr)
mtcars %>% count(cyl, gear) %>% mutate(Freq = n/sum(n))
# Source: local data frame [8 x 4]
# Groups: cyl [3]
#
# cyl gear n Freq
# (dbl) (dbl) (int) (dbl)
# 1 4 3 1 0.09090909
# 2 4 4 8 0.72727273
# 3 4 5 2 0.18181818
# 4 6 3 2 0.28571429
# 5 6 4 4 0.57142857
# 6 6 5 1 0.14285714
# 7 8 3 12 0.85714286
# 8 8 5 2 0.14285714
或等价地,
mtcars %>% group_by(cyl, gear) %>% summarise(n = n()) %>% mutate(Freq = n/sum(n))
注意每个阶段的分组情况,否则你的号码会掉线