Rstudio,计数,总和的百分比和按具体的品牌[复制]

问题描述 投票:1回答:2

这个问题已经在这里有一个答案:

我与R中的工作室3个问题中挣扎。连我可以计算的方式很简单,这是不是很干净(如使用滤镜功能很多次)。这是一个样本数据集在下面。 The dataset

其实,真正的数据集包含了100多万,所以我想知道一个有效的方法来计算。另外,如果有可能,我想避免创建新数据集。

我想在这一套做的是,

  1. 如何总结“的品牌一户的数”?
  2. 如何总结“销售按品牌A的总和”?
  3. 如何总结“品牌所有住户的百分比”(我的意思是“渗透”)?

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

r count sum percentage
2个回答
0
投票

这是在哪里使用所谓的tidyverse(https://www.tidyverse.org)包的集合一个很好的例子。 dplyr是内tidyverse它提供了一个非常简单的,透明的,并且可读取的方式来做到这包。您不必创建新dataframes。

在你的数据集,我相信列家庭是家庭ID号。 (如果它实际上是家庭数量,代码可以很容易地进行调整,以回答你的问题)

  1. 由伯爵品牌一个家庭:
countbrandA<-dataset %>% filter(brand=="A") %>% summarize(N=n())
  1. 销售由A牌子的总和
totalsalesbrandA <- filter(brand=="A") %>% summarize(salestotal=sum(sales))
  1. 品牌所有家庭的比例。首先得有一个品牌的家庭总数,然后由总分裂。
grandtotal<-dataset %>% summarize(N=n())
brandpercentageA=countbrandA/grandtotal

或获得在单个dplyr管各品牌比例,你可以这样做

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

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年2月10日。

© www.soinside.com 2019 - 2024. All rights reserved.