我正在使用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个元素,等等。然而,关键是窗口-size是灵活的,因为我将它用于多种分析。
答案 0 :(得分:2)
这里有一些解决方案。
使用cut
和table
:
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
:
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)
答案 1 :(得分:1)
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