如何将矢量分成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
任何想法如何在没有循环的情况下做到这一点?
答案 0 :(得分:3)
使用split
和cut
功能:
(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
上述调用返回一个数字向量列表。