【问题标题】:Generating an cooccurance matrix in R在 R 中生成共现矩阵
【发布时间】:2017-05-15 15:15:08
【问题描述】:

我在这方面工作了很长时间,希望有人能帮助我。 ;) 我有一个示例数据,它有两列:CustomerID 和 Basket。 如下图所示:

我想要的是一种共现矩阵,其中列和行被标记为篮子的名称。它指的是我在下面链接的旧帖子:

How to use R to create a word co-occurrence matrix.

来自德国的问候!

凯文

【问题讨论】:

  • 你试过什么?请以易于粘贴的形式提供数据。有关如何做到这一点的提示,请参阅 this post

标签: r associations rules


【解决方案1】:

基于the given link,您是否正在寻找类似的东西?

library(data.table)
library(qdapTools)
crossprod(
  as.matrix(
    mtabulate(
      dcast(setDT(DT), rowid(CRMPrivatkundeID) ~ CRMPrivatkundeID)[, -1]
      )
    )
  )
#               Esquinzo Playa Fleesensee Jandia Playa Masmavi Noblis Playa Granda Quinta die Ria
#Esquinzo Playa              1          1            0       0      0            0              0
#Fleesensee                  1         14            0       1      0            0              0
#Jandia Playa                0          0            1       0      1            0              0
#Masmavi                     0          1            0       1      0            0              0
#Noblis                      0          0            1       0      1            0              0
#Playa Granda                0          0            0       0      0            1              1
#Quinta die Ria              0          0            0       0      0            1              1

这也适用 mtabulate():

library(data.table)
crossprod(
  as.matrix(
    dcast(DT, CRMPrivatkundeID ~ Basket)[, -1]
  )
)

数据

library(data.table)
f <- "Fleesensee"
DT <- data.table(
  CRMPrivatkundeID = rep(c(56, 172, 240, 306, 365, 423, 427), each = 2L),
  Basket = c(f, "Masmavi", f, f, f, "Esquinzo Playa", "Jandia Playa",
            "Noblis", "Quinta die Ria", "Playa Granda", rep(f, 4))
)

【讨论】:

    【解决方案2】:

    data.table 是这样的。假设您的 data.frame 名称是 temp:

    library(data.table)
    setDT(temp)                   
    dcast.data.table(ID ~ basket, data = temp)
    

    【讨论】:

    • 您好,感谢您的回复。出现此消息: setDT(dat) 中的错误:参数 'x' 到 'setDT' 中的所有元素必须具有相同的长度。我忘了提到数据包括大约 100.000 行
    • 栏篮有 27 种不同的形式,如果你觉得有帮助的话;)
    • 我以为这是普通的两栏data.frame。您能否将str(dat) 的输出粘贴到您的问题中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 2018-05-28
    • 1970-01-01
    相关资源
    最近更新 更多