rmf*_*rmf 6 attributes r correlation
我有一个相等行和列的数据帧/矩阵.我想只提取上三角或下三角.
x<-data.frame(matrix(1:25,nrow=5))
colnames(x)<-LETTERS[1:5]
rownames(x)<-LETTERS[1:5]
x[upper.tri(x,diag=F)]
Run Code Online (Sandbox Code Playgroud)
从这个结果来看,不可能说出值来自列和行的组合.所以,我想在结果中有行和列属性.像这样的东西:
Col Row Val
B A 6
C A 11
C B 12
...
Run Code Online (Sandbox Code Playgroud)
我需要为一个大的相关矩阵做这个.谢谢.
我只是用which
具有arr.ind = TRUE
这样的:
ind <- which( upper.tri(x,diag=F) , arr.ind = TRUE )
data.frame( col = dimnames(x)[[2]][ind[,2]] ,
row = dimnames(x)[[1]][ind[,1]] ,
val = x[ ind ] )
col row val
1 B A 6
2 C A 11
3 C B 12
4 D A 16
5 D B 17
6 D C 18
7 E A 21
8 E B 22
9 E C 23
10 E D 24
Run Code Online (Sandbox Code Playgroud)
首先,为了让事情变得明确,我改变了
colnames(x) <- LETTERS[6:10]
Run Code Online (Sandbox Code Playgroud)
用于expand.grid
获取像这样的行和列名称
rowCol <- expand.grid(rownames(x), colnames(x))
Run Code Online (Sandbox Code Playgroud)
要从此数据框中获取正确的行,请采取
labs <- rowCol[as.vector(upper.tri(x,diag=F)),]
df <- cbind(labs, x[upper.tri(x,diag=F)])
colnames(df) <- c("Row","Col","Val")
df[,c(2,1,3)]
## Col Row Val
## 6 G A 6
## 11 H A 11
## ...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2042 次 |
最近记录: |