1

SO での重複の可能性:既存のデータ フレームの条件を使用して新しい変数を計算する

グループ平均からベクトル (z など) を作成しようとしています。ベクトルの長さは、グループ平均が作成された元のデータ フレームの行数に等しくなり、ベクトル z の各要素はグループ メンバーに対応します。

例えば、

A      mean of group A
C      mean of group c
F      mean of group F
C      mean of group C

どんな助けでも大歓迎です。

4

3 に答える 3

4

機能が必要なようですave

見てみる

?ave

例えば試してみてください

ave(InsectSprays$count,InsectSprays$spray)

(InsectSprays には R が付属しており、そのままで動作するはずです) または

with(InsectSprays, ave(count,spray))

したがって、データで同等のことを行い、それをに割り当てますz

これが何をするかです(最初の2行を貼り付けてから調べてみてくださいInSp):

 InSp <- InsectSprays
 InSp$ave <- with(InSp, ave(count,spray))
 head(InSp,15)
   count spray      ave
1     10     A 14.50000
2      7     A 14.50000
3     20     A 14.50000
4     14     A 14.50000
5     14     A 14.50000
6     12     A 14.50000
7     10     A 14.50000
8     23     A 14.50000
9     17     A 14.50000
10    20     A 14.50000
11    14     A 14.50000
12    13     A 14.50000
13    11     B 15.33333
14    17     B 15.33333
15    21     B 15.33333

この関数aveには、引数として関数を指定できるため、他にも多くの用途があります (そして、計算する代わりに、必要なグループごとに他の関数を使用することを意味します)。特に微妙な使い方については、この回答を参照してください。

于 2013-05-14T04:12:20.857 に答える
1

ここで説明されているように、rowMeans を使用できます。

列のサブセットで行平均を計算する

data <- matrix(c(1:12),nrow=3)

z <- rowMeans(data)

data
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

z
[1] 5.5 6.5 7.5
于 2013-05-14T11:59:23.343 に答える
0

元のデータがどのように設定されているかはよくわかりません。そのため、それについて詳しく知るのに役立ちます。

行にデータがあり、各要素が対応する行の平均である新しいベクトルが必要な場合は、R の ?apply 関数を使用して簡単に実行できます。

X     = matrix(rnorm(100), nrow=10)
means = apply(X, 1, mean)
于 2013-05-14T04:23:34.813 に答える