1

次の例のようなデータ ファイルがありますが、はるかに大きい

names    num    Y1  Y2
William  1  4.71    7.4
William  2  3.75    8
William  3  4.71    7.9
Katja    1  5.83    8.5
Katja    2  5.17    7.1
Katja    3  6.08    7.4
Aroma    1  4.04    7.5
Aroma    2  5       6.9
Aroma    3  4.3     7.9
...

Y1 と Y2 の同じ名前 (最初の列) の 3 つのそれぞれの平均を計算する必要があります。そして、Y1 と Y2 を別々に、各名前の平均で棒グラフを作成します。したがって、x 軸には名前があり、y 軸には平均値があります。誰でもこれで私を助けることができますか?

4

2 に答える 2

8

も使用できますaggregate。詳細については、を参照?aggregateしてください。

> aggregate(.~names, FUN=mean, data=df[, -2])
    names       Y1       Y2
1   Aroma 4.446667 7.433333
2   Katja 5.693333 7.666667
3 William 4.390000 7.766667

各グループの平均を取る別の方法については、この投稿をご覧ください。

barplot棒グラフの場合、 ggplot2 グラフィックスなどの他の代替手段がありますが、R ベース関数を使用します。

barplot(DF[,2], names.arg=DF$names, ylab="mean of Y1", las=1) # for Y1
barplot(DF[,3], names.arg=DF$names, ylab="mean of Y2", las=1) # for Y2

生成するもの:

ここに画像の説明を入力

あなたは R に非常に慣れていないので、R の基礎を学ぶための良い出発点であるR の紹介を読むことをお勧めします。

于 2013-09-12T13:36:38.610 に答える
0

パッケージを使用する(あなたのテーブルであるとsqldf仮定)df

library(sqldf)
sqldf("SELECT names, avg(Y1) as mean_Y1, avg(Y2) as mean_Y2 FROM df GROUP BY names")
于 2013-09-12T13:20:11.890 に答える