提问人:cliu 提问时间:9/24/2022 更新时间:9/24/2022 访问量:23
在基于另一个矩阵的 NA 矩阵中填充缺失数据
Pad missing data in a matrix with NA based on another matrix
问:
我有两个邻接矩阵,其中第二个矩阵有一些缺失的数据(这意味着这两个矩阵的正方形大小不同),但是如何在第二个矩阵中用 NA 填充缺失的数据?
数据如下:
#first matrix
t1 = matrix(
c(1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1),
nrow = 4,
ncol = 4,
byrow = TRUE
)
rownames(t1) <- c("a","b", "c", "d")
colnames(t1) <- c("a","b", "c", "d")
#second matrix
t2 = matrix(
c(1, 1, 0, 0, 0, 1, 0, 0, 1),
nrow = 3,
ncol = 3,
byrow = TRUE
)
rownames(t2) <- c("a","c", "d") #assume data from b are missing here
colnames(t2) <- c("a","c", "d")
第二个矩阵的预期成果:
a b c d
a 1 NA 1 0
b NA NA NA NA
c 0 NA 0 1
d 0 NA 0 1
我有一个更大的数据集,因此将不胜感激@
答:
1赞
Robert Hacken
9/24/2022
#1
如果行名和列名可以信赖:
t3 <- t1
t3[] <- NA
t3[rownames(t2), colnames(t2)] <- t2
t3
# a b c d
# a 1 NA 1 0
# b NA NA NA NA
# c 0 NA 0 1
# d 0 NA 0 1
评论
0赞
cliu
9/24/2022
谢谢@Robert哈肯。简洁高效!
1赞
Robert Hacken
9/24/2022
@cliu 说到高效..我用一种更快的不同方法替换了创建新 s 矩阵的矩阵。在大多数情况下,这可能无关紧要,但在某些情况下可能无关紧要。ifelse()
NA
0赞
cliu
9/24/2022
嗨@Robert哈肯对不起,我刚刚意识到我遇到的问题与此略有不同。你愿意在这里看看 stackoverflow.com/questions/73838452/ 吗......?
0赞
Robert Hacken
9/25/2022
@cliu我看到你已经在那里得到了一个公认的答案,但我仍然想发布一个替代答案。
评论