作者wertymin24 (werty)
看板Statistics
標題[程式] 用R做平均
時間Thu May 26 19:22:02 2011
------------------------------------------------------------------------
TITLE請著名軟體類別
請填入軟體程式類別 例如SAS、SPSS、R、EVIEWS...等
R
[程式問題]:
資料處理、迴歸、敘述統計、logistic、probit...等
資料處理
[軟體熟悉度]:
請把以下不需要的部份刪除
中(3個月到1年)
[問題敘述]:
我有幾筆資料(大小從數千筆到數萬筆不等)
我希望可以針對裡面的一些值做平均
比如說資料像這樣
temp swc
13 2
12 3
13 4
11 5
13 1
12 5
13 2
11 1
我想要讓temp每兩個數字做一次平均 (13,12 13,11 13,12 13,11)
(swc也要做一樣的事)
然後回傳到一個matrix裡面
但是R一直說
subscript out of bounds
可是我很確定我的matrix比我要回傳的數值還要大(nrow比較多)
請問有人有辦法解決這個問題嗎~"~
[程式範例]:
temp=as.matrix(temp)
temp=temp[3:nrow(temp),6:7] ##取出我想要的部分
temp=apply(temp[,1:2], 2, as.numeric)
a=matrix(NA,nrow=2020,ncol=2,byrow=TRUE)
for(i in 1:2014) {
if (i>=1) {
a[i+1,1]=mean(temp[2*i+1:2*(i+1),1])
} else {
a[1,1]=mean(temp[1:2,1])
}
}
-----------------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.82.37
※ 編輯: wertymin24 來自: 140.112.82.37 (05/26 19:26)
1F:→ cris122:程式範例 第一行就不能執行了 05/26 19:59
2F:→ bmka:suppose temp has even number of rows: 05/26 20:29
3F:→ bmka:tmprow <- nrow(temp)/2 05/26 20:32
4F:→ bmka:idx<- rep(1:tmprow, rep(2, tmprow)) 05/26 20:32
5F:→ bmka:tapply(temp[,1], idx, mean) 05/26 20:34
6F:→ bmka:剩下的自己寫 05/26 20:35
7F:→ clickhere:2*i+1:2*(i+1) 爆掉了. 05/26 20:46
8F:→ clickhere:colMeans(matrix(temp[,1],nrow=2)) 05/26 20:48
9F:→ clickhere:colMeans(matrix(temp[,2],nrow=2)) 05/26 20:48
10F:→ wertymin24:回一樓,只是範例,我沒放上檔案 05/26 21:27
11F:→ wertymin24:回b大,你的方法有用,但我想進一步請教apply,tapply 05/26 22:19
12F:→ wertymin24:還有sapply的差別? 05/26 22:19
13F:→ wertymin24:回click大~喔喔~這方法實在是太聰明了~謝謝 05/26 22:24
14F:推 gsuper:推C大 05/27 13:34
15F:推 Aqery:apply系的不是文件都有嗎,還附帶範例給你... 05/28 18:19