分组矢量

时间:2014-05-21 10:27:40

标签: r vector split

如何将矢量分成R?

中的组

我有一个数字向量

 [1] 3.5 3.0 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 3.4 3.0 3.0 4.0 4.4 3.9 3.5 3.8 3.8 3.4     3.7 3.6
[24] 3.3 3.4 3.0 3.4 3.5 3.4 3.2 3.1 3.4 4.1 4.2 3.1 3.2 3.5 3.6 3.0 3.4 3.5 2.3 3.2 3.5 3.8 3.0
[47] 3.8 3.2 3.7 3.3

并希望按值分组,

minValue = 2.0 
maxValue = 4.5 //rounded to next 0.5

所以我想要(4.5-2.0)/0.5 = 5组

1 group >=2.0 x < 2.5
2 group >=2.5 x < 3.0
3 group >=3.0 x < 3.5
4 group >=3.5 x < 4.0
5 group >=4.0 x < 4.5

任何想法如何在没有循环的情况下做到这一点?

1 个答案:

答案 0 :(得分:3)

使用splitcut功能:

(x <- round(runif(50, 2, 4.5), 1)) # exemplary data
## [1] 3.9 3.1 2.8 3.7 4.2 4.4 2.0 3.3 3.5 2.2 3.3 4.2 2.6 3.6 3.6 3.2 3.4 2.9 3.5 2.1 2.9 3.6 3.9 2.4 3.9 3.1
## [27] 4.2 2.8 2.7 2.1 2.1 3.0 2.2 2.5 4.3 2.8 2.0 2.2 2.3 2.2 3.8 2.2 2.1 4.1 3.9 2.1 2.1 2.3 2.2 3.1

split(x, cut(x, seq(2,4.5,by=0.5), right=FALSE))
## $`[2,2.5)`
##  [1] 2.0 2.2 2.1 2.4 2.1 2.1 2.2 2.0 2.2 2.3 2.2 2.2 2.1 2.1 2.1 2.3 2.2
## 
## $`[2.5,3)`
## [1] 2.8 2.6 2.9 2.9 2.8 2.7 2.5 2.8
## 
## $`[3,3.5)`
## [1] 3.1 3.3 3.3 3.2 3.4 3.1 3.0 3.1
## 
## $`[3.5,4)`
## [1] 3.9 3.7 3.5 3.6 3.6 3.5 3.6 3.9 3.9 3.8 3.9
##
## $`[4,4.5)`
## [1] 4.2 4.4 4.2 4.2 4.3 4.1

上述调用返回一个数字向量列表。