全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
9690 1
2014-12-17
新手出来乍到,总有很多问题~现在请教各位高手~

A 是这样一个矩阵,我想计算矩阵A中每一列中1,2,3,4,5各占比例是多少,但是计算时要把“0”除外,即:以第一列为例,“1”的概率为p11=2/ 9(用1的个数,除以这一列非零数的个数),最后的结果希望是一个5行10列的矩阵,P[i,j]表示第j列中 i 占的比例,1=1,2,3,4,5;j=1:ncol(A)
  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    2    2    1    4    3   2     3   1     4       5  
[2,]    0    3    3    5    1   4     4    2    1      4
[3,]    4    4    2    1    4   4    4    2    0        0
[4,]    1    0    5    3    5    2     3   1     4       5  
[5,]    2    2    0   4    3    1    5    5    3    2
[6,]    0    3    3    5    1    4    4    2    1    4
[7,]    4    4    2    0    0    1    5    5    3    2
[8,]    1    5    5    3    2    1    5    5    3    2
[9,]    5   0    1    4    3      3    3    3    2    1
[10,]    3    3    3    2    1  2    2    0   4    3
[11,]    4    4    2    1    4   2    2    0   4    3

二维码

扫码加我 拉你入群

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

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

全部回复
2015-1-9 16:07:22
> a<-sample(rep(0:5,20),110)
> b<-matrix(a,ncol=10)
> b
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    3    5    3    2    3    0    0    1    1     5
[2,]    2    3    4    3    2    3    2    1    3     3
[3,]    3    5    1    3    0    2    0    4    1     5
[4,]    5    4    0    4    0    5    0    1    4     0
[5,]    0    1    3    1    4    0    4    5    3     2
[6,]    0    2    4    5    0    5    1    0    1     1
[7,]    4    3    3    4    3    2    3    4    5     1
[8,]    1    0    2    4    5    2    1    2    1     5
[9,]    4    2    4    4    1    5    3    0    2     4
[10,]    0    5    2    2    1    5    2    4    4     3
[11,]    1    5    0    0    2    5    5    1    5     2

> d<-apply(b,2,function(x) sum(x!=0))
> d
[1]  8 10  9 10  8  9  8  9 11 10

f<-matrix(0,ncol=10,nrow=5)
> for(i in 1:10){
+ for(j in 1:5){
+  f[j,i]<-sum(b[,i]==j)
+ }
+ }
> f
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    2    1    1    1    2    0    2    4    4     2
[2,]    1    2    2    2    2    3    2    1    1     2
[3,]    2    2    3    2    2    1    2    0    2     2
[4,]    2    1    3    4    1    0    1    3    2     1
[5,]    1    4    0    1    1    5    1    1    2     3
> sweep(f,2,d,"/")
      [,1] [,2]      [,3] [,4]  [,5]      [,6]  [,7]      [,8]       [,9]
[1,] 0.250  0.1 0.1111111  0.1 0.250 0.0000000 0.250 0.4444444 0.36363636
[2,] 0.125  0.2 0.2222222  0.2 0.250 0.3333333 0.250 0.1111111 0.09090909
[3,] 0.250  0.2 0.3333333  0.2 0.250 0.1111111 0.250 0.0000000 0.18181818
[4,] 0.250  0.1 0.3333333  0.4 0.125 0.0000000 0.125 0.3333333 0.18181818
[5,] 0.125  0.4 0.0000000  0.1 0.125 0.5555556 0.125 0.1111111 0.18181818
     [,10]
[1,]   0.2
[2,]   0.2
[3,]   0.2
[4,]   0.1
[5,]   0.3
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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