1

我正在使用 R,我想将标准整数向量转换为 2 列数据框,显示每个向量中落在指定大小窗口内的元素数。

以这个向量为例:

    1, 75, 79, 90, 91, 92, 109, 120, 167, 198, 203, 204, 206, 224, 230, 
    236, 240, 245, 263, 344

查看窗口大小为 50 的值的结果应如下所示:

50  1
100 5
150 2
200 2
250 8
300 1
350 1
400 0

第一列作为数字范围,第二列作为该范围内的计数。

这表明对于 1-50 范围内有 1 个元素,对于 51-100 有 5 个元素,对于 101-150 有 2 个元素,依此类推。然而,关键是窗口大小是灵活,因为我将使用它进行多种分析。

4

2 回答 2

2

这里有一些解决方案。

使用cuttable

table(cut(vv,seq(min(vv),max(vv),50),include.lowest = TRUE))
   [1,51]  (51,101] (101,151] (151,201] (201,251] (251,301] 
        1         5         2         2         8         1 

使用findInterval

table(findInterval(vv,seq(min(vv),max(vv),50)))

1 2 3 4 5 6 7 
1 5 2 2 8 1 1 

shingle从 lattice 包中使用:

shingle(vv,cbind(seq(min(vv),max(vv),50) ,seq(50,max(vv)+50,50)))

Intervals:
  min max count
1   1  50     1
2  51 100     5
3 101 150     2
4 151 200     2
5 201 250     8
6 251 300     1
7 301 350     1

where `vv`:

    c(1, 75, 79, 90, 91, 92, 109, 120, 167, 198, 203, 204, 206, 224, 
    230, 236, 240, 245, 263, 344)
于 2013-10-22T21:48:19.587 回答
2
table((as.integer(d/50)+1) * 50)

或使用整数除法

table((d%/%50+1) * 50)

输出:

 50 100 150 200 250 300 350 
  1   5   2   2   8   1   1 
于 2013-10-24T03:42:48.610 回答