mutate-dplyr包中的值共享

时间:2018-06-15 13:50:33

标签: r

我想计算每个商店中每个班级的价值份额。这可能是变异吗?

data<-read_excel("data.xlsx")

data2<-data%>%
  group_by(Store, Class)%>%
  summarise(Values=sum(Value))%>%
  mutate(Values2=Valor/???)

我有这样的数据集:

    Store   Class   Value
    A   1   100
    A   2   200
    A   3   300
    A   1   200
    A   2   400
    A   3   600
    B   1   10
    B   2   20
    B   3   30
    B   1   20
    B   2   40
    B   3   60

谢谢!

1 个答案:

答案 0 :(得分:0)

对数据框进行分组后,您可以将值列相加两次并查看该操作的行为有所不同:在summarise内,它将为每个商店和类组合添加所有值。然后在下一行的mutate中,它将假设您正在剥离第二层分组(在本例中为类),并按商店给出总和。因此,mutate(share = Value / sum(Value))为每个类产生与商店相关的份额。

library(dplyr)

df <- "Store   Class   Value
    A   1   100
A   2   200
A   3   300
A   1   200
A   2   400
A   3   600
B   1   10
B   2   20
B   3   30
B   1   20
B   2   40
B   3   60" %>% readr::read_table2()

df %>%
  group_by(Store, Class) %>%
  summarise(Value = sum(Value)) %>%
  mutate(share = Value / sum(Value))
#> # A tibble: 6 x 4
#> # Groups:   Store [2]
#>   Store Class Value share
#>   <chr> <int> <int> <dbl>
#> 1 A         1   300 0.167
#> 2 A         2   600 0.333
#> 3 A         3   900 0.5  
#> 4 B         1    30 0.167
#> 5 B         2    60 0.333
#> 6 B         3    90 0.5

reprex package(v0.2.0)创建于2018-06-15。