全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2684 13
2014-12-01
假设我要对计算一个矩阵的均值方差等,但是我只计算非零数的均值,
for example: A=[1,0,3,4   0,0,2,2   3,3,2,0  4,2,1,0  0,1,0,2]假设A是一个4*5的矩阵,每四个一组,代表一列,我要计算这一列的均值(比如第一列,均值为(1+3+4)/3),方差,还有其他等等 ,我想要这样计算,您能明白我的意思吗?可以做出来吗?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-12-1 16:16:51
提供两种思路:
思路1:排除非0元素,然后计算平均值:
复制代码

方差类似。
思路2:将“0“替换成NA,然后就可以用mean 或者var 中的na.rm=T来计算。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-1 16:38:09
jiangbeilu 发表于 2014-12-1 16:16
提供两种思路:
思路1:排除非0元素,然后计算平均值:
万分感谢~~~{:3_46:}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-2 11:06:33
jiangbeilu 发表于 2014-12-1 16:16
提供两种思路:
思路1:排除非0元素,然后计算平均值:
大神,麻烦再帮我看看我这个代码问题在哪里?运行不出来~~~
read.table("D:/Program Files/R/R/R-2.15.2/bin/i386/test.csv",header=T,sep=",")->mydata
mydata->A          #A是一个矩阵
Ex=function(x){
mean(x)
}                          #Ex这里是一个函数
En0=function(x){
x1=x-Ex                 #所以x-Ex是不是就不能直接计算
(1/sqrt(2*pi))*(1/n)*sum(abs(x1))
}
He0=function(x){
var(x)
sqrt(abs(var-En0^2))
}
Ex=function(x){
mean(x[x!=0],na.rm=T)
}
En=function(x){
En0(x[x!=0],na.rm=T)
}
He=function(x){
He0(x[x!=0],na.rm=T)
}
apply(A,2,Ex)
apply(A,2,En)
apply(A,2,He)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-2 11:14:52

你可以把你的test.csv文件用xls传上来,你没必要拿一串代码来测试我对代码的熟悉程序,别人的时间也很宝贵,只有运行才能比较快地发现你的代码问题之所在。
还有,apply(A,2,Ex)这个可以运行吧?
你要问问题,要有数据,有代码,还要有报错。
只有这样,别人才能尽快地给你解答,而不是一个问题,需要来回问3、4次。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-2 11:23:21
好吧~懂了  刚来论坛,不懂规矩~受教了
附件列表

test.xls

大小:23.5 KB

 马上下载

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群