【问题标题】:Adjacency Matrix for User in RR中用户的邻接矩阵
【发布时间】:2014-04-16 12:14:47
【问题描述】:

我有一个数据如下-

user_id     post_id
24376261    204506440
98461       204446324
98461       203026202
98461       203031838
311542      204351465
875740      203031838

此数据表示用户在网站的文章/帖子中发表评论的帖子。 现在,我需要在行和列中创建一个带有 user_id 的矩阵,如果这些用户通过博客文章连接,则值为 1,否则为 0。即我想要的输出将如下所示 -

user       24376261 98461   311542  875740
24376261    1       0       0       0
98461       0       1       0       1
311542      0       0       1       0
875740      0       1       0       1

如何在 R 中做到这一点?我尝试从这个问题中遵循 Brian 方法 - Adjacency matrix in R 但我得到了以下类的 R 对象 -

> class(am)
[1] "dgCMatrix"
attr(,"package")

如何将其转换为 data.frame 或可以导出到 R 的内容?

【问题讨论】:

    标签: r matrix binary igraph adjacency-matrix


    【解决方案1】:

    这是一种可以让您获得所需输出的方法:

    tcrossprod(table(mydf))
    #           user_id
    # user_id    98461 311542 875740 24376261
    #   98461        3      0      1        0
    #   311542       0      1      0        0
    #   875740       1      0      1        0
    #   24376261     0      0      0        1
    (tcrossprod(table(mydf)) != 0) + 0
    #           user_id
    # user_id    98461 311542 875740 24376261
    #   98461        1      0      1        0
    #   311542       0      1      0        0
    #   875740       1      0      1        0
    #   24376261     0      0      0        1
    

    如果您希望结果为data.frame,您可以将输出包装在as.data.frame.matrix 中。


    这是假设“mydf”定义为:

    mydf <- structure(list(user_id = c(24376261L, 98461L, 98461L, 98461L, 
    311542L, 875740L), post_id = c(204506440L, 204446324L, 203026202L, 
    203031838L, 204351465L, 203031838L)), .Names = c("user_id", "post_id"), 
    class = "data.frame", row.names = c(NA, -6L))
    

    【讨论】:

    • 对不起,这并没有给我和你一样的结果。你能告诉我 mydf 表中有什么吗?
    • @RHelp,you're 应该提供可重复的示例,而不是回答的人。尽管如此,我还是添加了一个更新,我使用的是“mydf”。
    • 我在我的问题中添加了我的数据。感谢您的耐心等待。但这不适用于我的数据集。如果我尝试你的解决方案,我会在行和列中得到 useri_id 和 post_id,并且填充矩阵的所有值在所有组合中都是 1。
    • @RHelp,您粘贴了数据的视图,而不是任何告诉我们数据结构的内容。使用dput 以可重复的方式共享您的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多