如何准备邻接矩阵进行网络分析

时间:2018-10-08 11:05:08

标签: r

我正在尝试通过在“ s_chloramphenicol”列上分配值来将下面的原始数据转换为相邻矩阵,以准备进行网络分析。

df <- structure(list(studyid0 = c(1L, 5L, 6L, 8L, 9L, 11L, 3052L, 3057L, 
3058L, 3058L, 3060L, 3063L, 3064L, 3067L), s_chloramphenicol = c(0L, 
0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L)), row.names = c(NA, 
-14L), class = "data.frame", .Names = c("studyid0", "s_chloramphenicol"
))

预期输出为

df<-structure(list(`1` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `5` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `6` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `8` = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 
0L, 0L, 0L), `9` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `11` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `3052` = c(0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 0L), `3057` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `3058` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `3060` = c(0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 
0L, 0L, 0L), `3063` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `3064` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), `3067` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L)), .Names = c("1", "5", "6", "8", "9", "11", "3052", 
"3057", "3058", "3060", "3063", "3064", "3067"), class = "data.frame", row.names = c(1L, 
5L, 6L, 8L, 9L, 11L, 3052L, 3057L, 3058L, 3060L, 3063L, 3064L, 
3067L))

1 个答案:

答案 0 :(得分:1)

您可以使用函数outer

df2 <- outer(df$s_chloramphenicol, df$s_chloramphenicol)
rownames(df2) <- colnames(df2) <- df$studyid0
df2

输出:

     1 5 6 8 9 11 3052 3057 3058 3058 3060 3063 3064 3067
1    0 0 0 0 0  0    0    0    0    0    0    0    0    0
5    0 0 0 0 0  0    0    0    0    0    0    0    0    0
6    0 0 0 0 0  0    0    0    0    0    0    0    0    0
8    0 0 0 1 0  0    1    0    0    0    1    0    0    0
9    0 0 0 0 0  0    0    0    0    0    0    0    0    0
11   0 0 0 0 0  0    0    0    0    0    0    0    0    0
3052 0 0 0 1 0  0    1    0    0    0    1    0    0    0
3057 0 0 0 0 0  0    0    0    0    0    0    0    0    0
3058 0 0 0 0 0  0    0    0    0    0    0    0    0    0
3058 0 0 0 0 0  0    0    0    0    0    0    0    0    0
3060 0 0 0 1 0  0    1    0    0    0    1    0    0    0
3063 0 0 0 0 0  0    0    0    0    0    0    0    0    0
3064 0 0 0 0 0  0    0    0    0    0    0    0    0    0
3067 0 0 0 0 0  0    0    0    0    0    0    0    0    0