2

Rで次のようなデータを集計しようとしています:

df = data.frame(c("a","a","a","a","a","b","b","b","b","b","c","c","c"))
colnames(df) = "f"
set.seed(10)
df$e = rnorm(13,20,5)

    f   e
1   a   20.09373
2   a   19.07874
3   a   13.14335
4   a   17.00416
5   a   21.47273
6   b   21.94897
7   b   13.95962
8   b   18.18162
9   b   11.86664
10  b   18.71761
11  c   25.50890
12  c   23.77891
13  c   18.80883

列fで集計し、一意のfタイプごとにeトリム平均を取得します (つまり、3 行のデータを生成します)。

私は試した:

df2=data.frame(0) 
df2=aggregate(df$e, by = "f",mean(df$e, trim=0.1))

次のエラーが発生しました:

Error in match.fun(FUN) : 
  'mean(df$e, trim = 0.1)' is not a function, character or symbol

オンラインでいくつかの検索を試みたところ、空になりました。私の実際のデータは約 30 個のe / fの値で構成されているので、この例の平均を実際にトリミングしないことは心配していtrim=0.1ません (ポイントが上位 5 パーセンタイルと下位 5 パーセンタイルの外側にないため)。意図したとおりに機能する集計関数を取得するだけです。ありがとう!

4

1 に答える 1

4

これを試して

df2=aggregate(e~f,data=df,mean,trim=0.1)
  f        e
1 a 18.15854
2 b 16.93489
3 c 22.69888

この場合の計算に使用する関数は、その名前だけで指定できます (例: ) mean。その関数に必要な追加のパラメーターは、コンマの後に設定されます。

于 2013-03-27T15:23:30.120 に答える