2016-11-10 81 views
-1

我有一个R的数据框,列出了一个商店部门的月度销售数据。每个记录包含月/年,部门名称以及该部门当月的总销售额。我试图计算部门的平均销售额,将它们添加到矢量avgs,但我似乎遇到两个问题:每个部门的总销售额根本没有编译(其评估为零),而avgs正在通过记录进行编译按部门分类。下面是我有:For循环编译错误在R

avgs = c() 
for(dept in data$departmentName){ 
    total <- 0 
    for(record in data){ 
    if(identical(data$departmentName, dept)){ 
     total <- total + data$ownerSales[record] 
    } 
    } 
    avgs <- c(avgs, total/72) 
} 

在环路的建成看着avgs,我发现它返回零的矢量数据帧的长度,而不是22个平均向量(有22个部门) 。我一直在调整这一点,我相信这是一个愚蠢的错误,但我无法弄清楚它是什么。任何帮助,将不胜感激。

+0

R不是一种编译语言。 – Roland

回答

0

为什么不使用library(dplyr)

library(dplyr) 
data(iris) 

iris %>% group_by(Species) %>% # or dept 
    summarise(total_plength = sum(Petal.Length), # total owner sales 
       weird_divby72 = total_plength/72) # total/72? 
# A tibble: 3 × 3 
    Species total_plength weird_divby72 
     <fctr>   <dbl>   <dbl> 
1  setosa   73.1  1.015278 
2 versicolor   213.0  2.958333 
3 virginica   277.6  3.855556 

你的情况可能是这样的:

data %>% group_by(deptName) %>% 
    summarise(total_sales = sum(ownerSales), 
       monthly_sales = total_sales/72) 

我喜欢dplyr为它的语法和pipeability。我认为这是对基础R的巨大改进,以便于数据处理。这是一个很好的备忘单,可以帮助你滚动:https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf

+0

哈哈,没有意识到我没有解释师。数据集有72个月的数据,所以我计算总销售额/ 72 =平均值。我在R中很新手,从来没有见过'dplyr',在这个例子中'Species'会等同于我的'departmentName'?结果列会给我我的'dept','total'和'avg'? – boop