【问题标题】:Subsetting and correlating two matrix of different sizes having 'NA'对具有“NA”的两个不同大小的矩阵进行子集化和关联
【发布时间】:2014-08-23 16:43:40
【问题描述】:

我有两个具有“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)。我对使用 corusena.rm 选项不感兴趣 实际上,真正的数据在成千上万的行和列中。我厌倦了 complete.casesis.na 来查找并删除 NA 。然后我尝试%in% 过滤行和列,但我得到 NA 或 NaN 作为最终答案。

非常感谢您的帮助。谢谢。

【问题讨论】:

    标签: r matrix correlation subset


    【解决方案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
    

    【讨论】:

    • 感谢您的回复!
    猜你喜欢
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 2018-08-07
    • 1970-01-01
    相关资源
    最近更新 更多