我有一个网络数据并试图分析它。问题是它有一些缺少的行或列。我想匹配行和列,因此它可以是方矩阵
我的数据如下:
A B C D E
A 0 2 1 4 5
B 1 0 2 4 2
D 2 4 0 2 2
E 1 2 2 2 0
我想让它看起来像这样:
A B C D E
A 0 2 1 4 5
B 1 0 2 4 2
C NA NA NA NA NA
D 2 4 0 2 2
E 1 2 2 2 0
由于我的数据非常庞大,所以我不能用手做。它有自动执行的语法吗?
答案 0 :(得分:1)
一种选择是根据唯一列名和行名创建NA
矩阵(假设它是对称的),然后通过匹配原始数据集中的行名和列名填充它
un1 <- unique(sort(c(colnames(m1), rownames(m1))))
m2 <- matrix(NA, length(un1), length(un1), dimnames = list(un1, un1))
m2[row.names(m1), colnames(m1)] <- m1
m2
# A B C D E
#A 0 2 1 4 5
#B 1 0 2 4 2
#C NA NA NA NA NA
#D 2 4 0 2 2
#E 1 2 2 2 0
m1 <- structure(c(0L, 1L, 2L, 1L, 2L, 0L, 4L, 2L, 1L, 2L, 0L, 2L, 4L,
4L, 2L, 2L, 5L, 2L, 2L, 0L), .Dim = 4:5, .Dimnames = list(c("A",
"B", "D", "E"), c("A", "B", "C", "D", "E")))