2011-07-28 3 views
9

私はddplyを使用してデータを集計していますが、出力データフレームに列名を割り当てるための洗練された方法が見つかりませんでした。dply集約された列名

現時点では私はこれをやっている:

agg_data <- ddply(raw_data, .(id, date, classification), nrow) 
names(agg_data)[4] <- "no_entries" 

この

agg_data <- ddply(agg_data, .(classification, date), colwise(mean, .(no_entries))) 
names(agg_data)[3] <- "avg_no_entries" 

はこれを行うには良い、よりエレガントな方法はありますか?

+0

また、 'count'を見たいかもしれません。 – hadley

答えて

8

あなたはsummariseを使用することができます。

agg_data <- ddply(raw_data, .(id, date, classification), summarise, "no_entries" = nrow(piece)) 

またはnrow(piece)が動作しない場合は、length(<column_name>)を使用することができます。例えば、ここでは誰もが実行可能でなければなりません例です:ジョシュアコメント

​​

または

ddply(baseball, .(year), summarise, newColumn = length(year)) 

EDIT

として、または、すべて大文字のバージョン、NROWはのチェックを行います君は。

+1

' NROW'があなたに必要なチェックをしています。 –

+0

@ジョシュア - うわー、ありがとう、私はそのことについて知らなかったと信じることはできません... – joran

+1

そのうまく動作します。私は 'piece'変数を認識していませんでした。すでにcolwise関数を使用しているときにどのように動作するか考えていますか?上記の質問に2番目の例を追加しました。 – behas

9

私はたくさん使う一般的な形式は次のとおりです。

ddply(raw_data, .(id, date, classification), function(x) data.frame(no_entries=nrow(x)) 

上記のイディオムは無名関数とうまく噛み合うように、私はほとんどすべての時間の私のddply文で無名関数を使用しています。これは、nrow()のような関数を表現する最も簡潔な方法ではありませんが、複数の引数を渡す関数では、私はそれが大好きです。

関連する問題