首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中建立邻接矩阵

在R中建立邻接矩阵
EN

Stack Overflow用户
提问于 2018-04-23 13:38:57
回答 2查看 83关注 0票数 0

大家好,这是我的问题。

使用

代码语言:javascript
复制
> visite_cliente <- aggregate(info.uso.2$N,list(CodCliente = info.uso.2$CodCliente, museo = info.uso.2$museo),sum)

我创建了以下矩阵:

代码语言:javascript
复制
> head(visite_cliente)

   CodCliente           museo      x
1       1247 ABBAZIA DI FRUTTUARIA 1
2       3260 ABBAZIA DI FRUTTUARIA 1
3       4104 ABBAZIA DI FRUTTUARIA 1
4       4145 ABBAZIA DI FRUTTUARIA 1
5       5368 ABBAZIA DI FRUTTUARIA 1
6       5530 ABBAZIA DI FRUTTUARIA 1

CodCliente是我的客户ID,而"museo“则是客户访问的博物馆(我在dataframe中有139个博物馆),X值代表了用户在一年内参观博物馆的时间。在"visite_cliente“中,如果客户访问了不止一个博物馆,您可以多次找到相同的ID。

我应该创建一个邻接矩阵,其中我将博物馆(所以139列)、行中的in作为列,并在矩阵中插入客户访问每个博物馆的时间。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-23 13:49:30

这是一个典型的长期整形问题。

就这么做

代码语言:javascript
复制
library(data.table)

dcast(data = visite_cliente, CodCliente ~ museo, value.var = "x")
票数 0
EN

Stack Overflow用户

发布于 2018-04-23 14:14:54

这不是很漂亮,但很管用。由于您的数据没有重用CodCliente,只有一个museo,也没有再访问博物馆,所以我增加了几行。如果将行名设为CodCliente,列名为museo,则可以简单地将它们用作邻接矩阵中的索引。

代码语言:javascript
复制
## sample data
visite_cliente = read.table(text="CodCliente   museo      x
1       1247 'ABBAZIA DI FRUTTUARIA' 1
2       3260 'ABBAZIA DI FRUTTUARIA' 1
3       4104 'ABBAZIA DI FRUTTUARIA' 1
4       4145 'ABBAZIA DI FRUTTUARIA' 1
5       5368 'ABBAZIA DI FRUTTUARIA' 1
6       5530 'ABBAZIA DI FRUTTUARIA' 1
7       5530 'ABBAZIA DI FRUTTUARIA' 1
8       1234 'MUSEO EGIZIO'  1
9       1247 'MUSEO EGIZIO'  1",
header=TRUE, stringsAsFactors=FALSE)


Adj = matrix(0, nrow=length(unique(visite_cliente$CodCliente)),
        ncol=length(unique(visite_cliente$museo)),
        dimnames = list(rownames=unique(visite_cliente$CodCliente),
            colnames=unique(visite_cliente$museo)))

for(row in 1:nrow(visite_cliente)) {
    Adj[as.character(visite_cliente[row,1]), visite_cliente[row,2]] =
        Adj[as.character(visite_cliente[row,1]), visite_cliente[row,2]] + 
            visite_cliente[row,3]
}
Adj
        colnames
rownames ABBAZIA DI FRUTTUARIA MUSEO EGIZIO
    1247                     1            1
    3260                     1            0
    4104                     1            0
    4145                     1            0
    5368                     1            0
    5530                     2            0
    1234                     0            1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49982618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档