我正在尝试基于具有 3 列的数据框在 R 中创建一个矩阵:第一列是组中人员的姓名,第二列也是组中人员的姓名,第三列是一个值,表示人员的情况比赛:
Person1 Person2 Match
1 Amber Tiffany 5
2 Amber James 1
3 Amber Kenneth 7
4 Amber Gordon 9
5 Tiffany James 4
6 Tiffany Kenneth 6
7 Tiffany Gordon 6
8 James Kenneth 3
9 James Gordon 7
10 Kenneth Gordon 2
etc
(实际上还有更多的名称和值)我想要矩阵的两个轴上的人名,如下所示:
琥珀色
蒂芙尼
詹姆士
肯尼斯
戈登
琥珀色
0
5
1
7
9
蒂芙尼
5
0
4
6
6
詹姆士
1
4
0
3
7
肯尼斯
7
6
3
0
2
戈登
9
6
7
2
0
我找不到一个简单的方法来做到这一点。
我已经阅读并尝试了几件事,例如:
但我还没有成功。
最佳答案
带有 igraph
的选项
get.adjacency(
graph_from_data_frame(df, directed = FALSE),
attr = "Match",
sparse = FALSE
)
给 Amber Tiffany James Kenneth Gordon
Amber 0 5 1 7 9
Tiffany 5 0 4 6 6
James 1 4 0 3 7
Kenneth 7 6 3 0 2
Gordon 9 6 7 2 0
数据> dput(df)
structure(list(Person1 = c("Amber", "Amber", "Amber", "Amber",
"Tiffany", "Tiffany", "Tiffany", "James", "James", "Kenneth"),
Person2 = c("Tiffany", "James", "Kenneth", "Gordon", "James",
"Kenneth", "Gordon", "Kenneth", "Gordon", "Gordon"), Match = c(5L,
1L, 7L, 9L, 4L, 6L, 6L, 3L, 7L, 2L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10"))
关于r - 将具有 3 列的数据帧转换为加权邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65726291/