2013-07-05 58 views
-3

我有一個大的數據幀,看起來像這樣:操作一個大的數據幀

P1_prom Nom 
1 -6.17 Pt_00187 
2 -6.17 Pt_00187 
3 -6.17 Pt_00187 
4 -6.17 Pt_00187 
5 -6.17 Pt_00187 
6 -6.17 Pt_01418 
7 -5.77 Pt_01418 
8 -5.37 Pt_01418 
9 -4.97 Pt_01418 
10 -4.57 Pt_01418 

- 
- 
- 
25000 

其中喃表示地圖中的一個點,P1_prom代表我們perfomed上的每個點的操作的值(注意我們對每個點執行了5次重複,因此每個點有5個值)。 我試圖做的,沒有成功,是創建一個新的列,其中每行對應於每個點的P1_prom的平均值。所以基本上我需要的程序是在新列的第一行中寫入P1_prom的前五個值的平均值,在第二行中寫入下一個五個值的平均值,依此類推。 任何人都可以指導我如何做到這一點。 非常感謝你, 維羅尼卡

+0

看看幫助頁面'tapply'工作(和所有其他'apply'功能),'by'和'aggregate' 。如果'dat'是你的數據'tapply(dat $ P1_prom,dat $ Nom,mean)'應該可以工作 –

+0

非常感謝,這確實起作用:) – user2555106

+0

這個問題非常不清楚。你說要添加一個列,這將提示'ave'功能。但是你的描述是聚合的,這樣新的列不會和當前的data.frame長度相同。 – John

回答

5

這是data.table

install.packages("data.table") 
library(data.table) 

setDT(df) 
df[, name_of_new_column := mean(P1_prom), by=Nom]