子集和关联具有'NA'的两个不同大小的矩阵

时间:2014-08-23 16:43:41

标签: r matrix correlation subset

我有两个不同大小的矩阵,带有'NA'值,想要找出常用术语之间的相关性。例如如果,

d1 =
       [x]  [y]   [z]
    a    1    6   11
    b    2   NA   12
    c    3    8   13
    d    4    9   14
    p+q  5   10   15

d2 =
   [t]  [u]  [v]  [x]  [y]
p+a 20   16   12    8    4
b   19   15   11    7    3
c   18   14   10    6    2
a   17   13    9    5    1

行名也可能有一些特殊字符(例如+)。我想将两个矩阵子集化,使它们只有公共行和列,没有NA,例如,

d1 <-  
    [x]  [y] 
[a]  1    6
[c]  3    8

d2 <-
   [x]  [y] 
[a]  5   1
[c]  6   2

我可以执行cor(d1,d2)。我对使用use的{​​{1}}或na.rm选项不感兴趣 实际上,真实数据是行和列的数据。我累了corcomplete.cases来查找并删除NA。然后我尝试is.na来过滤行和列,但我得到NA或NaN作为最终答案。

我真的很感谢你的帮助。感谢。

1 个答案:

答案 0 :(得分:1)

你可以尝试:

 r1 <- intersect(rownames(d1), rownames(d2))
 c1 <- intersect(colnames(d1), colnames(d2))
 indx1 <- !!rowSums(is.na(d1)) 
 r2 <- r1[!r1 %in% names(indx1)[indx1]]

 d1[r2,c1]
 #  x y
 #a 1 6
 #c 3 8

 d2[r2,c1]
      x y
 #  a 5 1
 #  c 6 2