如何知道 R 中 cut 函数的边界值?

How to know border values for cut function in R?

如果我没有指定任何边界而只写了所需的分割数,如何知道 R 中 cut 函数生成的切割值(边界)是多少?

complexes_data2$FlatPlanAmount <-  cut(complexes_data2$FlatPlanAmount, 3,labels = FALSE)

边界值是多少?

文档在“详细信息”部分的第一句中说明如下。我的重点。

Details
When breaks is specified as a single number, the range of the data is divided into breaks pieces of equal length, and then the outer limits are moved away by 0.1% of the range to ensure that the extreme values both fall within the break intervals.

因此,使用 rangediff 计算范围长度,并将其除以中断数。将此值的倍数添加到要断开的向量的 min 以获得断点。

第一个测试数据。

set.seed(2021)
x <- runif(100, 0, 10)
y <- cut(x, 3, labels = FALSE)

现在计算休息时间。

brks <- min(x) + (1:2)*(diff(range(x)) / 3)
brks
#[1] 3.428711 6.690577

z <- cut(x, breaks = c(-Inf, brks, Inf), labels = FALSE)
identical(y, z)
#[1] TRUE

这是一个针对 xbreaks 的任何值执行此操作的函数。

where <- function(x, breaks, na.rm = TRUE){
  min(x, na.rm = na.rm) + seq_len(breaks)[-breaks]*(diff(range(x, na.rm = na.rm)) / breaks)  
}

where(x, 3)
#[1] 3.428711 6.690577