2016-06-30 17 views
1

私は会社の四半期データを持つデータフレームを持っており、2つの四半期に渡って年間平均または合計(可変タイプに基づく)条件:年と会社。Rコーディング:データフレーム内の条件付き合計/平均を複数の条件とする方法

たとえば、1984年の会社iは、4つの異なる四半期の値に基づいて、平均在庫金額と総収入をそれぞれCompanyi_I1984とCompanyi_REV1984とします。平均値との和のために - - 私は現在、これらのコード行を使用していますが、Rは、「NA」を返し続け、私が検索し、代替案を探してきましたが、何も動いていないようにみえ:

Companyi_I1984 <- with(R, mean(I [FY == "1984" & Co == "AAR CORP" ])) 
Companyi_REV1984 <- with(R, sum(REVQ [FY == "1984" & Co == "AAR CORP" ])) 

Rは私のデータフレーム です私は< - 四半期ごとの在庫 REVQ < - 私は参照のため、以下の例のRコード含めました

の四半期売上高:

company<-c("xray", "xray", "xray", "xray", "xray", "xray", "xray", "xray", "kilo", "kilo", "kilo", "kilo") 

year <-c("1984","1984","1984","1984", "1985", "1985","1985", "1985","1984","1984","1984","1984") 

qtr <-c("1","2","3","4", "1", "2","3", "4","1", "2","3","4") 

IQ <- rnorm(12,0,10) 
REVQ <- rnorm(12,0,10) 
AssetQ <- rnorm(12,0,10) 
CashQ <- rnorm(12,0,10) 

#Show dataframe 
data<-data.frame(year, qtr, company, IQ, REVQ, AssetQ, CashQ) 

この例では、私は「xの平均値または合計を望みますray_1984 '、' xray_1985 '、' kilo_1984 'です。同じ年が異なる企業にどのように表示されるのかを確認します。すべてのヘルプは高く評価されるだろう R coding: How to keep records with 4 complete quarters of data

これは、ここで見つける私の最初の質問への第二段階です。ありがとう〜M

+0

あなたの前の質問には、どこに行く必要があるかを示す多くのリードがあります。どのようなアプローチにも対応できます。 'ライブラリ(dplyr); %summary_each(funs(sum、mean)、-qtr) 'ドキュメントとビネットを使用します。 – alistaire

+0

dplyrは魔法です、ありがとうございます@alistaire –

答えて

0

data.tableを使用できます。 'data.frame'を 'year'、 'company'でグループ化した 'data.table'(setDT(data))に変換し、に指定されている列(.SD)をループし、sumsdunlistを取得します。期待される出力。

library(data.table) 
setDT(data)[, unlist(lapply(.SD, function(x) list(Sum=sum(x), Mean = mean(x))), 
     recursive=FALSE), by = .(year, company), .SDcols = IQ:CashQ] 
# year company  IQ.Sum IQ.Mean REVQ.Sum REVQ.Mean AssetQ.Sum AssetQ.Mean CashQ.Sum CashQ.Mean 
#1: 1984 xray 36.2510271 9.0627568 -16.814705 -4.2036762 -1.218832 -0.3047081 -31.500185 -7.875046 
#2: 1985 xray 7.2565640 1.8141410 -11.509279 -2.8773198 -4.900577 -1.2251443 -5.229553 -1.307388 
#3: 1984 kilo 0.6851807 0.1712952 -2.022284 -0.5055711 14.593264 3.6483161 -22.693697 -5.673424 
関連する問題