假设我有一个长格式的购买表。它看起来像:
purchases = data.frame(
Item = c("Bike", "Bike", "Bike", "Bike", "Car", "Car", "Car", "Car"),
Variable = c("Age", "Age", "Price", "Price", "Age", "Age", "Price", "Price"),
Value = c("New", "Used", "Full", "Discount", "New", "Used", "Discount", "Discount")
)
我想查看按项目和变量分组的值的分布。所以我可以说“在所有售出的自行车中,50% 已被使用”或“所有汽车均以折扣价出售。”
理想的输出将是一个如下所示的表格:
我可以通过执行以下操作来获取 dplyr 中的计数:
purchases %>% group_by(Item, Variable, Value) %>%
summarise(Total = n())
然后,我将每个值除以它们各自的项目和变量分组。我可以想到一些长答案,其中我有条件地在另一个变量中添加相应的计数,但我希望找到一种简单的方法来通过 dplyr 来做到这一点。另一种描述方式可能是在分组的上一级执行计算。
最佳答案
library(tidyverse)
purchases %>%
count(Item, Variable, Value) %>%
group_by(Item, Variable) %>%
mutate(pct = n / sum(n)) %>%
ungroup()
# A tibble: 7 x 5
Item Variable Value n pct
<fct> <fct> <fct> <int> <dbl>
1 Bike Age New 1 0.5
2 Bike Age Used 1 0.5
3 Bike Price Discount 1 0.5
4 Bike Price Full 1 0.5
5 Car Age New 1 0.5
6 Car Age Used 1 0.5
7 Car Price Discount 2 1
关于r - dplyr - 将分组变量与分组变量的子集进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58527988/