作者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