2013-05-14 55 views
1

SO上可能存在重複:Computing a new variable using conditions of an existing data frame如何從R中的分組數據創建一個新的向量?

我試圖從組中創建一個向量(例如z)。矢量的長度等於創建組平均值的原始數據幀的行數,矢量z的每個元素將對應於組成員。

例如,

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

任何幫助將不勝感激。

+0

[閱讀](http://stackoverflow.com/q/5963269),以瞭解如何使一個很好的問題。你必須更加努力地解釋你到目前爲止所做的工作,給出一些樣本數據並解釋你想要的結果。好問題更有可能得到回答。 – 2013-05-14 16:31:44

回答

4

聽起來像是你需要的功能ave

嘗試尋找

?ave 

例如嘗試

ave(InsectSprays$count,InsectSprays$spray) 

(InsectSprays帶有R,應該工作,因爲它代表)或

with(InsectSprays, ave(count,spray)) 

因此,與您的數據做相當於並將其分配給z

下面是它做什麼(嘗試粘貼前兩行然後檢查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有許多其他用途,因爲您可以提供一個函數作爲參數(然後,而不是計算意味着它將使用您希望的任何其他函數組)。對於它的特別細微的使用,請參見this answer

0

我不太關注你的原始數據是如何設置的,所以這將有助於更多地瞭解這一點。 ?

如果你有行的數據,而你只想要一個新的向量,其中每個元素是相應行的平均值,可以很容易地,使用R的完成應用功能:

X  = matrix(rnorm(100), nrow=10) 
means = apply(X, 1, mean) 
1

你可以使用這裏描述rowMeans爲:

Calculate row means on subset of columns

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 
+0

我認爲OP正在尋找'ave',如果是這樣,你的回答不是正確的,因爲它沒有考慮到OP所需的麻煩。 – 2013-05-14 16:28:44

相關問題