我有一个表格,显示每个来源(1,...,n)的三个不同变量(Correlation1,Correlation2,Correlation 3)之间的相关性。但是,并非每个来源都报告每个相关性。
现在我想创建一个矩阵,指示在哪个源中给出了哪些相关性。指标矩阵的行数应该等于没有NA的corr.table中给出的值的总数。如果给出了该位置的相应相关性,则指示器始终在对角线上并设置为“1”。
我在一个简单的例子中总结了我的问题:
这里,源1包含第一个相关性,因此对角线的第一个值设置为“1”而所有其他元素都设置为“0”。源2中给出了相同的内容。源3报告所有三个相关,因此第三行中的第一个值将设置为“1”,第四行中的第二个元素也将设置为“1”,第三个值中的第三个值将设置为“1”。第五行设置为“1”。等等......
您是否知道如何根据R?
中的相关矩阵创建此指标矩阵答案 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