如何按行计算“一致性”元素的平均值(不考虑等于1或1.0的值):
x=matrix(c(1,1,0,1,0,1,1,1,1,0,1,1,1,0,1,0,1,1,1,0),4,5)
ncolumn=dim(x)[2]
concordance = matrix(1,ncolumn,ncolumn)
concordancevec = rep(0,(ncolumn*(ncolumn-1))/2)
for (i in 1:(ncolumn-1)){
y=t((t(x[,i])))
z=x[,(i+1):ncolumn]
for (j in 1:(ncolumn-i)){
m=(t(t(z)))
concordance[i,j+i] = mean(y*(m[,j])+(1-y)*(1-m[,j]))
concordancevec[i*j] = mean(y*(m[,j])+(1-y)*(1-m[,j]))
}
}
concordance
答案 0 :(得分:0)
以下为您提供行方式(这是您想要的):
> sapply(1:4, function(i){mean(concordance[i,-(1:i)])})
[1] 0.4375000 0.4166667 0.6250000 0.7500000
1:4
是上三角形部分中的行,对于任何此类行,concordance[i,-(1:i)]
是您想要取平均值的行的一部分。只需将采用这些方法的函数应用于向量1:4
。
获得上三角形部分的整体平均值更容易:
> mean(concordance[upper.tri(concordance)])
[1] 0.5