gpt4 book ai didi

r - 将具有 3 列的数据帧转换为加权邻接矩阵

转载 作者:行者123 更新时间:2023-12-04 12:30:33 25 4
gpt4 key购买 nike

我正在尝试基于具有 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


我找不到一个简单的方法来做到这一点。
我已经阅读并尝试了几件事,例如:
  • Reshape three column data frame to matrix ("long" to "wide" format)
  • R: Create 3 column dataframe from sparse matrix
  • How to reshape data from long to wide format
  • Reshape three column data frame to matrix ("long" to "wide" format)

  • 但我还没有成功。

    最佳答案

    带有 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com