gpt4 book ai didi

r - 创建共现矩阵

转载 作者:行者123 更新时间:2023-12-03 09:15:24 24 4
gpt4 key购买 nike

我正在尝试解决具有共现矩阵的问题。我有一个交易和项目的数据文件,我想查看一个项目一起出现的交易数量的矩阵。

我是R编程的新手,我很高兴找到R的所有快捷方式,而不是创建特定的循环(我几年前曾经使用C,现在只坚持使用Excel宏和SPSS)。我在这里检查了解决方案,但没有找到一个可行的解决方案(最接近的解决方案是这里给出的解决方案:Co-occurrence matrix using SAC?-但是当我使用projecting_tm时,它产生了一条错误消息,我怀疑cbind在我的情况下不成功。

本质上,我有一个包含以下内容的表:

TrxID Items Quant
Trx1 A 3
Trx1 B 1
Trx1 C 1
Trx2 E 3
Trx2 B 1
Trx3 B 1
Trx3 C 4
Trx4 D 1
Trx4 E 1
Trx4 A 1
Trx5 F 5
Trx5 B 3
Trx5 C 2
Trx5 D 1, etc.

我想创建类似的东西:
   A B C D E F
A 0 1 1 0 1 1
B 1 0 3 1 1 0
C 1 3 0 1 0 0
D 1 1 1 0 1 1
E 1 1 0 1 0 0
F 0 1 1 1 0 0

我所做的是(您可能会笑我的菜鸟R方法):
library(igraph)
library(tnet)

trx <- read.table("FileName.txt", header=TRUE)
transID <- t(trx[1])
items <- t(trx[2])

id_item <- cbind(items,transID)
item_item <- projecting_tm(id_item, method="sum")
item_item <- tnet_igraph(item_item,type="weighted one-mode tnet")
item_matrix <-get.adjacency(item_item,attr="weight")
item_matrix

如上所述,cbind可能不成功,因此projecting_tm无法给我任何结果。

是否有其他方法或对我的方法有更正?

您的帮助将不胜感激!

最佳答案

我将结合使用reshape2软件包和矩阵代数:

#read in your data
dat <- read.table(text="TrxID Items Quant
Trx1 A 3
Trx1 B 1
Trx1 C 1
Trx2 E 3
Trx2 B 1
Trx3 B 1
Trx3 C 4
Trx4 D 1
Trx4 E 1
Trx4 A 1
Trx5 F 5
Trx5 B 3
Trx5 C 2
Trx5 D 1", header=T)

#making the boolean matrix
library(reshape2)
dat2 <- melt(dat)
w <- dcast(dat2, Items~TrxID)
x <- as.matrix(w[,-1])
x[is.na(x)] <- 0
x <- apply(x, 2, function(x) as.numeric(x > 0)) #recode as 0/1
v <- x %*% t(x) #the magic matrix
diag(v) <- 0 #repalce diagonal
dimnames(v) <- list(w[, 1], w[,1]) #name the dimensions
v

对于图形可能...
g <- graph.adjacency(v, weighted=TRUE, mode ='undirected')
g <- simplify(g)
# set labels and degrees of vertices
V(g)$label <- V(g)$name
V(g)$degree <- degree(g)
plot(g)

关于r - 创建共现矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281303/

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