首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用plyr计数频率

用plyr计数频率
EN

Stack Overflow用户
提问于 2015-11-09 10:21:49
回答 2查看 577关注 0票数 1

我试图使用R中的库count函数来计算出现的特定数字组合的频率。

例如,我想知道数字1和2一起出现的频率。

代码语言:javascript
复制
   N1 N2 N3 
1   1  2  5
2   2  1  4    
3   2  4  3
4   3  1  2    
5   2  3  1
6   3  1  4

因此,对于像上面这样的数据,我必须合并第1列和第2列,第1和第3列,第2和第3列,并将它们合并。然后对合并的数据进行“计数”。

代码语言:javascript
复制
combined1_2 = cbind(df$N1,df$N2)
combined1_3 = cbind(df$N1,df$N3)
combined2_3 = cbind(df$N2,df$N3)

combined_all = rbind(freq1_2,freq1_3,freq2_3)
combined_freq = count(combined_all)

因此,当我检查频率表时,我得到了以下结果(只显示了部分结果)。

代码语言:javascript
复制
  x1 x2  Freq
1  1  2     2
2  2  1     2   

问题是,计数函数处理的数字"1和2“不同于"2和1”。所以我想知道在R中是否有任何函数可以解决这个问题,并产生像下面这样的正确结果。

代码语言:javascript
复制
  x1 x2  Freq
1  1  2     4
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-09 10:26:50

你只需数数这些数字连在一起的时间:

代码语言:javascript
复制
sum(apply(df, 1, function(x){all(c(1, 2) %in% x)}))
#[1] 4
票数 1
EN

Stack Overflow用户

发布于 2015-11-09 10:35:48

如果没有太多的数字要检查,也可以通过检查df是否等于每个数字来将其向量化。

代码语言:javascript
复制
sum((rowSums(df == 1) > 0) & (rowSums(df == 2) > 0))
## [1] 4
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33606969

复制
相关文章

相似问题

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