[程式] 用R做平均

看板Statistics作者 (werty)時間14年前 (2011/05/26 19:22), 編輯推噓2(2013)
留言15則, 6人參與, 最新討論串1/1
------------------------------------------------------------------------ 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)

05/26 19:59, , 1F
程式範例 第一行就不能執行了
05/26 19:59, 1F

05/26 20:29, , 2F
suppose temp has even number of rows:
05/26 20:29, 2F

05/26 20:32, , 3F
tmprow <- nrow(temp)/2
05/26 20:32, 3F

05/26 20:32, , 4F
idx<- rep(1:tmprow, rep(2, tmprow))
05/26 20:32, 4F

05/26 20:34, , 5F
tapply(temp[,1], idx, mean)
05/26 20:34, 5F

05/26 20:35, , 6F
剩下的自己寫
05/26 20:35, 6F

05/26 20:46, , 7F
2*i+1:2*(i+1) 爆掉了.
05/26 20:46, 7F

05/26 20:48, , 8F
colMeans(matrix(temp[,1],nrow=2))
05/26 20:48, 8F

05/26 20:48, , 9F
colMeans(matrix(temp[,2],nrow=2))
05/26 20:48, 9F

05/26 21:27, , 10F
回一樓,只是範例,我沒放上檔案
05/26 21:27, 10F

05/26 22:19, , 11F
回b大,你的方法有用,但我想進一步請教apply,tapply
05/26 22:19, 11F

05/26 22:19, , 12F
還有sapply的差別?
05/26 22:19, 12F

05/26 22:24, , 13F
回click大~喔喔~這方法實在是太聰明了~謝謝
05/26 22:24, 13F

05/27 13:34, , 14F
推C大
05/27 13:34, 14F

05/28 18:19, , 15F
apply系的不是文件都有嗎,還附帶範例給你...
05/28 18:19, 15F
文章代碼(AID): #1DtZVTtn (Statistics)