【发布时间】:2017-09-08 03:51:25
【问题描述】:
是否有任何可用的函数可以简化此代码?想知道特定week 中sales 的product 占其总销售额的比例
library(dplyr)
# Create data.frame
df <- tribble(
~week, ~product, ~sales,
1L, "A", 40,
1L, "B", 20,
2L, "A", 50,
2L, "C", 10
)
# Total sales
df_summ <- df %>%
group_by(product) %>%
summarise(total = sum(sales))
# Expected result
df_prop <- df %>%
inner_join(df_summ) %>%
mutate(prop = sales / total) %>%
select(-sales, -total) # optional
结果:
#> A tibble: 4 x 3
#> week product prop
#> <int> <chr> <dbl>
#> 1 A 0.444444
#> 1 B 1.000000
#> 2 A 0.555555
#> 2 C 1.000000
【问题讨论】:
-
您也可以使用:
df %>% mutate(prop = sales/sum(sales) ) -
@A5C1D2H2I1M1N2O1R2T1,我看错了想要的比例,你是对的。
-
您也可以使用:
df %>% group_by(product) %>% mutate(prop = sales/sum(sales) )