首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个直方图频率计数转换为R中的数组

将多个直方图频率计数转换为R中的数组
EN

Stack Overflow用户
提问于 2013-07-24 14:23:45
回答 2查看 1.5K关注 0票数 0

对于矩阵“结果”中的每一行,如下所示

代码语言:javascript
复制
            A   B   C   D   E   F   G   H   I   J      
       1    4   6   3   5   9   9   9   3   4   4
       2    5   7   5   5   8   8   8   7   4   5
       3    7   5   4   4   7   9   7   4   4   5
       4    6   6   6   6   8   9   8   6   3   6
       5    4   5   5   5   8   8   7   4   3   7
       6    7   9   7   6   7   8   8   5   7   6
       7    5   6   6   5   8   8   7   3   3   5
       8    6   7   4   5   8   9   8   4   6   5
       9    6   8   8   6   7   7   7   7   6   6

我想为每一行绘制一个直方图,其中有3个桶,如下所示:

代码语言:javascript
复制
samp<-result[1,]
hist(samp, breaks = 3, col="lightblue", border="pink")

现在需要的是将直方图的频率计数转换成一个数组,如果我有4个回收箱,并且第一个bin有count=5,第二个bin有一个count=2和第四个bin=3,那么现在我想要一个每个回收箱中所有值的向量,它来自向量中的数据结果(每一行)作为我的输出。

代码语言:javascript
复制
       row1  5 2 0 3

对于数百行,我想以一种自动化的方式进行,并因此发布了这个问题。

最后,矩阵应该看起来像

代码语言:javascript
复制
             bin 2-4 bin 4-6 bin6-8 bin8-10
      row 1   5       2       0     3
      row 2
      row 3
      row 4
      row 5
      row 6
      row 7
      row 8
      row 9
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-24 14:31:58

您可以访问由counts返回的hist矢量(详见?hist ):

代码语言:javascript
复制
counts <- hist(samp, breaks = 3, col="lightblue", border="pink")$counts
票数 1
EN

Stack Overflow用户

发布于 2013-07-24 14:37:07

代码语言:javascript
复制
DF <- read.table(text="A   B   C   D   E   F   G   H   I   J      
1    4   6   3   5   9   9   9   3   4   4
2    5   7   5   5   8   8   8   7   4   5
3    7   5   4   4   7   9   7   4   4   5
4    6   6   6   6   8   9   8   6   3   6
5    4   5   5   5   8   8   7   4   3   7
6    7   9   7   6   7   8   8   5   7   6
7    5   6   6   5   8   8   7   3   3   5
8    6   7   4   5   8   9   8   4   6   5
9    6   8   8   6   7   7   7   7   6   6", header=TRUE)

m <- as.matrix(DF)

apply(m,1,function(x) hist(x,breaks = 3)$count)
# $`1`
# [1] 5 2 0 3
# 
# $`2`
# [1] 5 0 2 3
# 
# $`3`
# [1] 6 3 1
# 
# $`4`
# [1] 1 6 2 1
# 
# $`5`
# [1] 3 3 4
# 
# $`6`
# [1] 3 4 2 1
# 
# $`7`
# [1] 2 5 3
# 
# $`8`
# [1] 6 3 1
# 
# $`9`
# [1] 4 4 0 2

注意,根据文档,中断次数只是一个建议。如果希望在所有行中具有相同的中断数,则应在hist之外执行绑定。

代码语言:javascript
复制
breaks <- 1:5*2
t(apply(m,1,function(x) table(cut(x,breaks,include.lowest = TRUE))))
#   [2,4] (4,6] (6,8] (8,10]
# 1     5     2     0      3
# 2     1     4     5      0
# 3     4     2     3      1
# 4     1     6     2      1
# 5     3     3     4      0
# 6     0     3     6      1
# 7     2     5     3      0
# 8     2     4     3      1
# 9     0     4     6      0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17836809

复制
相关文章

相似问题

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