2016-11-10 13 views
-1

にあります。Rのデータフレームに、店舗の部門ごとの月次売上データがリストされています。各レコードには月/年、部門名、およびその部門のその月の合計売上が含まれています。私は部署別の平均売り上げを計算してベクトルavgsに追加しようとしていますが、2つの問題があるようです:1部門あたりの合計売上がコンパイルされておらず(0に評価されています)、avgsは代わりにレコードでコンパイルしています部門別ここで私が持っているものです。ループのコンパイルエラーが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) 

私はそれの構文とpipeabilityためdplyrが好きです。私はそれがデータの争いを容易にするためにベースRよりも大幅に改善されたと思う。ここでは転がりを助けるための良いチートシートです:https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf

+0

母は、分裂について説明していないことに気付かなかった。データセットには72ヶ月がありますので、私は合計売上/ 72 =平均を目指していました。私はRでかなり初心者で、 'dplyr'は見たことがありません。この例では' Species'は 'departmentName'と同じでしょうか?そして結果として得られる列は、私の「部」、「トータル」、および「平均」を私に与えるだろうか? – boop