R 在矩阵中进行不对称成对比较

R 在矩阵中进行不对称成对比较,r,R,我有一个成对值的矩阵,但不是对称的,我的意思是,AxB和BxA不一样。下面是一个虚拟示例: A B C D E A 1 0.7 0.8 0.8 0.9 B 0.2 1 0.2 0.8 0.3 C 0.3 0.4 1 0.5 0.6 D 0.4 0.9 0.8 1 0.4 E 0.8 0.2 0.8 0.8 1 我需要知道有多少比较[I,j]高于或等于0.7,有多少比较[j,I]也高于0.7,以

我有一个成对值的矩阵,但不是对称的,我的意思是,AxB和BxA不一样。下面是一个虚拟示例:

    A    B    C    D    E
A    1  0.7  0.8  0.8  0.9
B  0.2    1  0.2  0.8  0.3
C  0.3  0.4    1  0.5  0.6
D  0.4  0.9  0.8    1  0.4
E  0.8  0.2  0.8  0.8    1
我需要知道有多少比较
[I,j]
高于或等于0.7,有多少比较
[j,I]
也高于
0.7
,以便删除高冗余元素。在本例中,元素
A
具有更多的元素
B、C、D和E
,应在进一步分析中删除。我考虑过使用
table
命令来实现这一点

table1 <- apply(M, 1, table)
table2 <- apply(M, 2, table)

table1您想如何处理>0.7的条目?将它们设置为NA?移除它们?无论如何,这应该让你朝着正确的方向前进:

#Assumes your data is named x
> which(x > 0.7, arr.ind = TRUE)
#----
  row col
A   1   1
E   5   1
B   2   2
D   4   2
...

#Set values = NA
x[which(x>0.7, arr.ind = TRUE)] <- NA
#---
    A   B   C   D   E
A  NA 0.7  NA  NA  NA
B 0.2  NA 0.2  NA 0.3
C 0.3 0.4  NA 0.5 0.6
D 0.4  NA  NA  NA 0.4
E  NA 0.2  NA  NA  NA
#假设您的数据名为x
>其中(x>0.7,arr.ind=TRUE)
#----
行列
A 11
E 5 1
B 2 2
D 4 2
...
#设定值=NA

x[哪个(x>0.7,arr.ind=TRUE)]您想如何处理>0.7的条目?将它们设置为NA?移除它们?无论如何,这应该让你朝着正确的方向前进:

#Assumes your data is named x
> which(x > 0.7, arr.ind = TRUE)
#----
  row col
A   1   1
E   5   1
B   2   2
D   4   2
...

#Set values = NA
x[which(x>0.7, arr.ind = TRUE)] <- NA
#---
    A   B   C   D   E
A  NA 0.7  NA  NA  NA
B 0.2  NA 0.2  NA 0.3
C 0.3 0.4  NA 0.5 0.6
D 0.4  NA  NA  NA 0.4
E  NA 0.2  NA  NA  NA
#假设您的数据名为x
>其中(x>0.7,arr.ind=TRUE)
#----
行列
A 11
E 5 1
B 2 2
D 4 2
...
#设定值=NA

x[其中(x>0.7,arr.ind=TRUE)]谢谢@Chase,我喜欢你的第二种方法。实际上,这些成对值是AxB、BxA等之间共享元素的数量,即4个元素的列表和7个元素的列表。因此,我想删除那些在a,B,C。。。按照您的方法,我可以在行和列中计算NAs的数量,然后删除那些值高于我选择的阈值的NAs,在这个虚拟示例中,4/5个元素中的共享索引将高于0.7,因此我应该从矩阵中删除。较短的版本:
x[x>0.7]谢谢@Chase,我喜欢您的第二种方法。实际上,这些成对值是AxB、BxA等之间共享元素的数量,即4个元素的列表和7个元素的列表。因此,我想删除那些在a,B,C。。。按照您的方法,我可以在行和列中计算NAs的数量,然后删除那些值高于我选择的阈值的NAs。在这个虚拟示例中,4/5个元素中的共享索引高于0.7,因此我应该从矩阵中删除。较短的版本:
x[x>0.7]