0

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

            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 个 bin 为每一行绘制一个直方图,如下所示:

samp<-result[1,]
hist(samp, breaks = 3, col="lightblue", border="pink")

第 1 行的直方图(3 个 bin)

现在需要将直方图频率计数转换为数组,如下所示如果我说 4 个 bin 并且说第一个 bin 有 count=5 并且第二个 bin 有一个 count=2 并且第四个 bin = 3。现在我想要一个包含每个 bin 中所有值的向量,来自向量中的数据结果(对于每一行)作为我的输出。

       row1  5 2 0 3

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

最后矩阵应该看起来像

             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
4

2 回答 2

2
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

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
于 2013-07-24T14:37:07.913 回答
1

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

counts <- hist(samp, breaks = 3, col="lightblue", border="pink")$counts
于 2013-07-24T14:31:58.883 回答