首页 文章

从关联矩阵创建指标矩阵

提问于
浏览
-3

我有一个表格,显示每个来源(1,...,n)的三个不同变量(Correlation1,Correlation2,Correlation 3)之间的相关性 . 但是,并非每个来源都报告每个相关性 .

现在我想创建一个矩阵,指示在哪个源中给出了哪些相关性 . 指标矩阵的行数应该等于没有NA的corr.table中给出的值的总数 . 如果给出了该位置的相应相关性,则指示器始终在对角线上并设置为“1” .

我在一个简单的例子中总结了我的问题:

enter image description here

这里,源1包含第一相关,因此对角线的第一个值设置为“1”而所有其他元素都是“0” . 源2中给出了相同的内容 . 源3报告所有三个相关性,因此第三行中的第一个值将设置为“1”,第四行中的第二个元素也将设置为“1”,第三个值中的第三个值将设置为“1” . 第五行设置为“1” . 等等....

你有一个想法,如何在R中给出相关矩阵来创建这个指标矩阵?

1 回答

  • 0

    这可能有效:

    > df <- matrix(rnorm(18),6,3)
        > df[4,1] <- NA
        > df[3,2] <- NA
        > df[6,3] <- NA
    
    > df
                [,1]        [,2]       [,3]
    [1,]  0.59299285  0.47057987  1.5362658
    [2,] -1.06073361  0.03898895 -0.3732643
    [3,]  0.35102152          NA  0.7484060
    [4,]          NA  0.58117835 -0.4967971
    [5,]  0.09878368 -0.71531458  1.4571918
    [6,] -0.86293568 -0.07522243         NA
    

    主要功能是 is.na . 其余的: as.numeric 等把它变成你想要的形式 .

    > idmat <-  1-matrix(as.numeric(is.na(df)),6,3)
         [,1] [,2] [,3]
    [1,]    1    1    1
    [2,]    1    1    1
    [3,]    1    0    1
    [4,]    0    1    1
    [5,]    1    1    1
    [6,]    1    1    0
    

    EDIT :正如@Ferdinand所指出的,以下更简单:

    > idmat <- 1-is.na(df)
         [,1] [,2] [,3]
    [1,]    1    1    1
    [2,]    1    1    1
    [3,]    1    0    1
    [4,]    0    1    1
    [5,]    1    1    1
    [6,]    1    1    0
    

相关问题