我有一个描述不同人之间关系的矩阵。如果人与人之间有任何联系,我在特定单元格中有“1”,否则 - “0”。如何将其转换为具有两列的 data.frame 如下所示:
人 1 -- 人 4
人 1 -- 人 6
人2——人1
?
使用melt
来自reshape2
:
library(reshape2)
set.seed(1)
mx <- matrix(sample(0:1, 9, r=T), nrow=3, dimnames=replicate(2, paste0("p", 1:3), s=F))
# p1 p2 p3
# p1 0 1 1
# p2 0 0 1
# p3 1 1 1
melt(mx)
# Var1 Var2 value
# 1 p1 p1 0
# 2 p2 p1 0
# 3 p3 p1 1
# 4 p1 p2 1
# 5 p2 p2 0
# 6 p3 p2 1
# 7 p1 p3 1
# 8 p2 p3 1
# 9 p3 p3 1