【问题标题】:rounding in R cut functionR 切函数中的舍入
【发布时间】:2014-06-10 12:56:24
【问题描述】:

有谁知道 R 如何选择 cut 函数中的有效位数?

y<-c(61, 64, 64, 65, 66)
table(cut(y, breaks=c(60.555, 67.123, 75.055)))

产生结果

(60.6,67.1] (67.1,75.1] 
          5           0 

但是

table(cut(y, breaks=c(60.958, 67.958, 74.958)))

产生结果

(61,68] (68,75] 
      5       0 

我希望 r 使用我在 cut 函数中提供的确切边界,但它似乎是四舍五入的。我不清楚它如何选择舍入的精度。请参见下面的示例。是否可以强制 R 使用我的确切边界?

【问题讨论】:

  • 你知道在这个例子中你使用了两个不同的变量吗?
  • 无论如何,dig.lab 是你想要的cut 中的参数
  • 抱歉,我已经编辑了我的帖子,但主要问题仍然存在。如果我说breaks=60.555,那就应该是这样。为什么 R 将其更改为 60.6?我希望休息时间正是我提供给函数的内容。
  • 感谢@rawr dig.lab 成功了。看起来只是受影响的值的显示,而不是实际的界限。谢谢!

标签: r rounding cut


【解决方案1】:

使用nchar 来查找每个剪辑的位数怎么样?以下是三个示例。

> y <- c(61, 64, 64, 65, 66)
> breaks1 <- c(60.555, 67.123, 75.055)
> table(cut(y, breaks = breaks1, dig.lab = min(nchar(breaks1))))

## (60.555,67.123] (67.123,75.055] 
##               5               0 
> breaks2 <- c(60.5, 67.1, 75.4)
> table(cut(y, breaks = breaks2, dig.lab = min(nchar(breaks2))))

## (60.5,67.1] (67.1,75.4] 
##           5           0 
> breaks3 <- c(60, 67, 75)
> table(cut(y, breaks = breaks3, dig.lab = min(nchar(breaks3))))

## (60,67] (67,75] 
##       5       0 

注意min 的使用只是为了控制在中断向量中的数字不相同时会出现的警告消息。

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 2021-07-27
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多