从关联矩阵创建指标矩阵

时间:2013-09-11 15:22:39

标签: r matrix correlation

我有一个表格,显示每个来源(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 :(得分: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

编辑:正如@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