首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找位于数据集中的成员之间的交互计数

查找位于数据集中的成员之间的交互计数
EN

Stack Overflow用户
提问于 2012-12-13 19:58:26
回答 1查看 84关注 0票数 1

我有一个通行证交通数据,它显示了成员之间的通行证交通,here's the sample dataset

它显示了连续行中成员之间的交互。我想对这些交互进行计数,并获得一个新的数据集,该数据集显示每个成员的成员之间发生了多少交互,方向并不重要

例如:

代码语言:javascript
复制
between 26 and 11 = X
between 26 and 27 = Y

我只是不知道我可以使用哪个函数,以及我如何为这个计算编写代码。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-13 20:12:50

您可以使用zoo包中的rollaply函数来查找所有交互。这些交互的频率可以使用table来计算。(我假设您的对象名为dat。)

代码语言:javascript
复制
library(zoo)
table(as.data.frame(rollapply(dat[[1]], 2, sort)))

结果是:

代码语言:javascript
复制
    V2
V1    4  8 10 11 13 17 19 25 26 27 53
  4   2 13 17  1  2  5  6  3  1  9  4
  8   0  2 14 11 10  4  5  0 13 13 11
  10  0  0  3  9  7  2  4  2  8 11  8
  11  0  0  0  1  6  5  4  4  5  4 25
  13  0  0  0  0  0  1  3  5  7  9  8
  17  0  0  0  0  0  0  1  1  1  5  5
  19  0  0  0  0  0  0  1  1  1  5  4
  25  0  0  0  0  0  0  0  0  5  8  5
  26  0  0  0  0  0  0  0  0  1  5  3
  27  0  0  0  0  0  0  0  0  0  0  1
  53  0  0  0  0  0  0  0  0  0  0  1

矩阵的下三角部分只包含零,因为方向无关紧要。

如果您对相同值之间的交互不感兴趣,请使用以下命令:

代码语言:javascript
复制
table(as.data.frame(rollapply(rle(dat[[1]])$values, 2, sort)))

    V2
V1    8 10 11 13 17 19 25 26 27 53
  4  13 17  1  2  5  6  3  1  9  4
  8   0 14 11 10  4  5  0 13 13 11
  10  0  0  9  7  2  4  2  8 11  8
  11  0  0  0  6  5  4  4  5  4 25
  13  0  0  0  0  1  3  5  7  9  8
  17  0  0  0  0  0  1  1  1  5  5
  19  0  0  0  0  0  0  1  1  5  4
  25  0  0  0  0  0  0  0  5  8  5
  26  0  0  0  0  0  0  0  0  5  3
  27  0  0  0  0  0  0  0  0  0  1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13859374

复制
相关文章

相似问题

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