-3

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

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

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

在此处输入图像描述

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

你有一个想法,如何在给定 R 中的相关矩阵的情况下创建这个指标矩阵?

4

1 回答 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

编辑:正如@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
于 2013-09-11T15:32:47.740 回答