【问题标题】:dplyr - compare grouped variables to a subset of grouped variablesdplyr - 将分组变量与分组变量的子集进行比较
【发布时间】:2019-10-23 17:18:15
【问题描述】:

假设我有一张长格式的采购表。它看起来像:

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 找到一种简单的方法。另一种描述它的方式可能是在分组的一个级别上执行计算。

【问题讨论】:

    标签: r group-by dplyr


    【解决方案1】:
    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 
    

    【讨论】:

      猜你喜欢
      • 2019-01-21
      • 2017-02-01
      • 1970-01-01
      • 2012-10-18
      • 2015-12-13
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多