R Studio,特定品牌的计数,总和和百分比

时间:2019-02-10 19:32:39

标签: r count sum percentage

我在R studio中遇到3个问题。即使我可以计算出一种非常简单的方法,它也不是很干净(就像很多次使用过滤器函数一样)。这是下面的示例数据集。 The dataset

实际上,实际数据集包含超过一百万,因此我想知道一种有效的计算方法。另外,如果可能,我要避免创建新的数据集。

我要在这组中做的是

  1. 如何总结“品牌A的家庭人数”?

  2. 如何总结“品牌A的销售额”?

  3. 如何总结“品牌占所有家庭的百分比”(我的意思是“渗透率”)?

感谢您的帮助。我真的很感激。

2 个答案:

答案 0 :(得分:0)

这是使用data.table的解决方案。有很多资源可以告诉您如何汇总变量,并且有几种不同的方法可以做到这一点。

如果您读到有关data.table here的信息,它也会回答您的问题。

library(data.table)
library(magrittr)
library(reprex)

x <- data.table(code = 1:5,
                sales = 2000,
                household = c(12345, 3598, 456, 45698, 4875),
                brand = c("A", "B", "A", "C", "A"))

# gives counts by brands and then filtered for brand A
one <- x[, .N, by = .(brand)] %>% 
  .[brand == "A"]

# gives sums by brand
two <- x[, sum(sales), by = .(brand)] %>% 
  .[brand == "A"]

# make new column with percent of household
x[, percent := household / sum(x$household)]

# summarise the percent
three <- x[, sum(percent), by = .(brand)]

reprex package(v0.2.0)于2019-02-10创建。

答案 1 :(得分:0)

这是在哪里使用称为tidyverse(https://www.tidyverse.org)的软件包集合的完美示例。 dplyr是tidyverse中的软件包,它提供了一种非常简单,透明和易读的方式来执行此操作。您不必创建新的数据框。

在您的数据集中,我相信“住户”列是住户的ID号。 (如果实际上是家庭人数,则可以轻松调整代码以回答您的问题)

  1. 按品牌A划分的家庭人数:
countbrandA<-dataset %>% filter(brand=="A") %>% summarize(N=n())
  1. 品牌A的销售总额
totalsalesbrandA <- filter(brand=="A") %>% summarize(salestotal=sum(sales))
  1. 品牌所有家庭的百分比。首先获得品牌A的家庭总数,然后除以总数。
grandtotal<-dataset %>% summarize(N=n())
brandpercentageA=countbrandA/grandtotal

或者要在单个dplyr管道中获得每个品牌的比例,您可以这样做

brandpercentage <- dataset %>% 
    group_by(brand) %>% 
    summarize(N=n()) %>%
    ungroup() %>%
    mutate(percent=N/grandtotal)