【问题标题】:R cut Pretty-print Values Beyond BoundariesR cut Pretty-print Values Beyond Boundaries
【发布时间】:2021-11-01 03:00:27
【问题描述】:

当某些值超出breaks 时,R 中是否有一些功能可以漂亮地打印转换为因子的数字向量?所需的输入和输出是

data <- seq(5, 95, 10)
result <- cutSpecial(data, breaks = c(30, 40, 50, 60, 70))
disc <- c("<30", "<30", "<30", "[30, 40)", "[40, 50)", "[50, 60)", "[60, 70)",
+   ">70", ">70", ">70")
cbind(data, disc)
     data disc      
 [1,] "5"  "<30"     
 [2,] "15" "<30"     
 [3,] "25" "<30"     
 [4,] "35" "[30, 40)"
 [5,] "45" "[40, 50)"
 [6,] "55" "[50, 60)"
 [7,] "65" "[60, 70)"
 [8,] "75" ">70"     
 [9,] "85" ">70"     
[10,] "95" ">70"     

基本的 R cut 函数只是将超出范围的值转换为不满意的 NAcutSpecial 在 R 生态系统中的作用是什么?

【问题讨论】:

    标签: r cut


    【解决方案1】:

    这将是我的santoku 包中的chop()

    library(santoku)
    data <- seq(5, 95, 10)
    chop(data, c(30, 40, 50, 60, 70))
    ##  [1] [5, 30)  [5, 30)  [5, 30)  [30, 40) [40, 50) [50, 60) [60, 70) [70, 95] [70, 95]
    ## [10] [70, 95]
    ## Levels: [5, 30) [30, 40) [40, 50) [50, 60) [60, 70) [70, 95]
    

    如果你想要特定的标签,你可以自己传递它们:

    chop(data, c(30, 40, 50, 60, 70), c("< 30", "[30-40)", "[40-50)", "[50-60)", "[60-70)", ">= 70"))
    

    或者在最新版本中,您可以使用lbl_dash() 并指定firstlast

    chop(data, c(30, 40, 50, 60, 70), labels = lbl_dash(first = "< 30", last = ">= 70"))
    ##  [1] < 30    < 30    < 30    30 - 40 40 - 50 50 - 60 60 - 70 >= 70   >= 70   >= 70  
    ## Levels: < 30 30 - 40 40 - 50 50 - 60 60 - 70 >= 70
    

    默认间隔标签没有这样的参数,但也许应该有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 2014-02-02
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 2020-10-10
      相关资源
      最近更新 更多