从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")