【问题标题】:Split vector in groups分组分割向量
【发布时间】:2014-07-09 22:32:01
【问题描述】:

如何在 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

有什么想法我可以在没有循环的情况下做到这一点吗?

【问题讨论】:

    标签: r vector split


    【解决方案1】:

    使用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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2016-11-27
      • 2015-07-03
      • 2011-07-10
      • 2016-04-18
      • 1970-01-01
      相关资源
      最近更新 更多