楼主: duzongyan
2728 13

[问答] R程序问题,关于矩阵计算的,新手上路,多多指教,感恩跪谢~~~ [推广有奖]

  • 2关注
  • 0粉丝

等待验证会员

高中生

42%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
215 点
帖子
22
精华
0
在线时间
19 小时
注册时间
2014-11-3
最后登录
2019-1-14

楼主
duzongyan 学生认证  发表于 2014-12-1 14:46:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
假设我要对计算一个矩阵的均值方差等,但是我只计算非零数的均值,
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),方差,还有其他等等 ,我想要这样计算,您能明白我的意思吗?可以做出来吗?

二维码

扫码加我 拉你入群

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

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

关键词:新手上路 R程序 example ExamP AMPL 新手上路 example 程序

本帖被以下文库推荐

沙发
jiangbeilu 学生认证  发表于 2014-12-1 16:16:51
提供两种思路:
思路1:排除非0元素,然后计算平均值:
  1. x<-c(1,0,3,4,0,0,2,2,3,3,2,0 ,4,2,1,0 ,0,1,0,2)
  2. y1<-matrix(x,4,5)
  3. nozeromean<-function(y){
  4. mean(y[y!=0],na.rm=T)
  5. }
  6. apply(y1,1,nozeromean)
  7. apply(y1,2,nozeromean)
复制代码

方差类似。
思路2:将“0“替换成NA,然后就可以用mean 或者var 中的na.rm=T来计算。
已有 2 人评分经验 学术水平 热心指数 收起 理由
李会超 + 40 + 2 精彩帖子
求证1加1 + 1 热心帮助其他会员

总评分: 经验 + 40  学术水平 + 2  热心指数 + 1   查看全部评分

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

板凳
duzongyan 学生认证  发表于 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)

报纸
jiangbeilu 学生认证  发表于 2014-12-2 11:14:52

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

地板
duzongyan 学生认证  发表于 2014-12-2 11:23:21
好吧~懂了  刚来论坛,不懂规矩~受教了

7
duzongyan 学生认证  发表于 2014-12-2 11:27:04
jiangbeilu 发表于 2014-12-2 11:14
你可以把你的test.csv文件用xls传上来,你没必要拿一串代码来测试我对代码的熟悉程序,别人的时间也很宝贵 ...
好吧,我已经上传上去了,但是没有传到你的回复下面,你看你能看见吗?“test.xls"文件~

8
jiangbeilu 学生认证  发表于 2014-12-2 12:49:16
数据几行几列啊,我下载下来看的就是一个向量,452个数字。

还有,最好把你要解决的问题,试着说清楚。
一来,你把你要解决的问题说清楚了,本身也加强你自己对这个问题的理解。
二来,也不会限制别人回答你问题的思路。因为解决你的问题的方法不止一种。可能你用的方法,别人会有更好的想法。

9
duzongyan 学生认证  发表于 2014-12-2 13:08:45
我重新传了一个~这个数据是一个943*10的矩阵,
1.我要针对每一列去计算它的Ex,En,He,但是我在计算的时候,只用每一列非零的数据去计算;
2.具体的计算公式是:
Ex=mean;
En=(1/sqrt(2*pi))*(1/n)*sum(abs(x-Ex));
He=sqrt(var-En^2)
(这里边的n对应的就是那一列非零元素的个数,其实也就是挑出那些非零的元素进行计算就成)

test.xls

93 KB

这是一个943行10列的矩阵

10
duzongyan 学生认证  发表于 2014-12-2 13:11:09
jiangbeilu 发表于 2014-12-2 12:49
数据几行几列啊,我下载下来看的就是一个向量,452个数字。

还有,最好把你要解决的问题,试着说清楚。
...
因为我在您的回复里,不能上传附件,所以我就传到这个帖子底下了,您看一下~另外,我把我要做的问题详细描述了一下,您看您能给解决一下吗?拜托拜托{:3_60:}{:3_60:}{:3_60:}

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 03:19