假设我想计算每个组中不同值的比例。例如,使用mtcars数据,我如何计算齿轮数的相对频率由am(自动/手动)与dplyr一步走?
library(dplyr)
data(mtcars)
mtcars <- tbl_df(mtcars)
# count frequency
mtcars %>%
group_by(am, gear) %>%
summarise(n = n())
# am gear n
# 0 3 15
# 0 4 4
# 1 4 8
# 1 5 5
我想达到的目标:
am gear n rel.freq
0 3 15 0.7894737
0 4 4 0.2105263
1 4 8 0.6153846
1 5 5 0.3846154
试试这个:
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
来自dplyr的小插图:
当您按多个变量分组时,每个摘要都会剥离分组的一个层次。这使得逐步上卷数据集变得很容易。
因此,在总结之后,去掉group_by中指定的最后一个分组变量‘gear’。在突变步骤中,数据由剩余的分组变量“am”分组。您可以在每个步骤中用组检查分组。
剥离的结果当然取决于group_by调用中分组变量的顺序。您可能希望执行后续的group_by(am),以使代码更显式。
关于舍入和修饰,请参考@Tyler Rinker的精彩回答。
试试这个:
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
来自dplyr的小插图:
当您按多个变量分组时,每个摘要都会剥离分组的一个层次。这使得逐步上卷数据集变得很容易。
因此,在总结之后,去掉group_by中指定的最后一个分组变量‘gear’。在突变步骤中,数据由剩余的分组变量“am”分组。您可以在每个步骤中用组检查分组。
剥离的结果当然取决于group_by调用中分组变量的顺序。您可能希望执行后续的group_by(am),以使代码更显式。
关于舍入和修饰,请参考@Tyler Rinker的精彩回答。