首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充共现矩阵

填充共现矩阵
EN

Stack Overflow用户
提问于 2012-10-11 17:35:46
回答 2查看 1.7K关注 0票数 2

我正在寻找一种快速有效的方法来填充共现矩阵(可以这么说)。以下是我正在使用的数据示例:

代码语言:javascript
复制
col1 col2
a e    
a f    
a e    
b f    
c g    
a e    
d f    
a e    
a g    
b e    
c e

我想要一个如下形式的矩阵:

代码语言:javascript
复制
... e...  f...  g    
a    
b    
c    
d

其中对应的条目与该频率有关。

例如,矩阵中的元素(3,1)将对应于(c,e)的共现频率,并且应当具有值1,并且(1,1)的值应当具有对应于数据集中的(a,e)的3个条目的值3。

我目前正在使用两个for循环单独计算项目,并且计算矩阵需要非常长的时间(实际数据大约有一百万行)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-11 17:52:34

你可以使用sparse来做你需要做的事情:

代码语言:javascript
复制
spA = sparse(data(:,1), data(:,2), 1);

其中data是您的数据,但作为数字。因此,您首先必须将字母字符转换为双精度。

Sparse从data(:,1)data(:,2)组装行/列对,每出现一对就加1。但是请注意,如果您希望矩阵是对称的,则可能需要根据您的数据对spA及其转置求和。

票数 1
EN

Stack Overflow用户

发布于 2012-10-11 17:52:37

这是R中使用table的解决方案

代码语言:javascript
复制
df <- read.table(text="col1 col2
a e    
a f    
a e    
b f    
c g    
a e    
d f    
a e    
a g    
b e    
c e", header = TRUE)

table(df)

    col2
col1 e f g
   a 4 1 1
   b 1 1 0
   c 1 0 1
   d 0 1 0
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12836531

复制
相关文章

相似问题

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