9

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

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

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"

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

4

2 に答える 2

9

私がよく使う一般的な形式は次のとおりです。

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

私はddplyほぼ常にステートメントで無名関数を使用しているため、上記のイディオムは無名関数とうまく調和しています。これは関数を表現する最も簡潔な方法ではありませんが、nrow()複数の引数を渡す関数では、私はそれがとても好きです。

于 2011-07-28T17:39:41.643 に答える
8

使用できますsummarise

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

または、うまくいかないlength(<column_name>)場合に使用できます。nrow(piece)たとえば、誰でも実行できるはずの例を次に示します。

ddply(baseball, .(year), summarise, newColumn = nrow(piece))

また

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

編集

または、ジョシュアのコメントのように、すべて大文字のバージョンNROWがチェックを行います。

于 2011-07-28T17:29:53.770 に答える