从data.frame创建矩阵并计算公共值

从data.frame创建矩阵并计算公共值,r,R,我试图了解多个网站上的跨域行为。我有这个信息 Website ClientID SessionId ------------------------------------- domain1 xxx d.0686 domain2 xxx d.0686 domain3 yyy f.1871 domain2 yyy f.1871 domain4

我试图了解多个网站上的跨域行为。我有这个信息

Website       ClientID     SessionId
-------------------------------------
domain1          xxx         d.0686
domain2          xxx         d.0686
domain3          yyy         f.1871
domain2          yyy         f.1871
domain4          yyy         f.1871
domain1          zzz         n.9210
domain2          zzz         n.9210
人们可以跨多个网站移动,但他们保留ClientID(存储为cookie)和SessionID(当一个人从一个域移动到另一个域时,在不同的网站之间共享)

我需要看看有多少SessionID两个不同的网站共享。我想最简单的方法是创建一个计算共享唯一sessionid的矩阵。这将是基于上表的结果

          Domain1     Domain2     Domain3     Domain4 
    --------------------------------------------------------
domain1     0            2          0           0

domain2     2            0          1           1

domain3     0            1          0           0

domain4     0            1          0           0
通过这种方式,我可以计算两个不同的网站在同一个sessionID中使用的次数,并使用
Circize()
package创建一个和弦图来可视化关系


可以在R域上执行吗?

是的,可以。。但代码生产工厂也不是这样。首先展示你自己的努力/代码,用户会很乐意帮助你改进它。把它读一读,约翰。
domains <- unique(information$Website)
output <- matrix(0, length(domains), length(domains))
colnames(output) <- rownames(output) <- domains

for (x in domains) {
  X <- unique(information[information$Website == x, 'SessionId'])
  for (y in domains) {
    Y <- unique(information[information$Website == y, 'SessionId'])
    output[rownames(output) == x, y] <- length(intersect(X, Y))
  }
}

print(output)

#domain1 domain2 domain3 domain4
#domain1       2       2       0       0
#domain2       2       3       1       1
#domain3       0       1       1       1
#domain4       0       1       1       1
information <- structure(list(Website = c("domain1", "domain2", "domain3", "domain2", "domain4", 
                                          "domain1", "domain2"), 
                              ClientID = c("xxx", "xxx", "yyy", "yyy", "yyy", "zzz", "zzz"), 
                              SessionId = c("d.0686", "d.0686", "f.1871", "f.1871", "f.1871", 
                                            "n.9210", "n.9210")), 
                         .Names = c("Website", "ClientID", "SessionId"), 
                         row.names = c(NA, -7L), class = "data.frame")