如何知道 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.
因此,使用 range
和 diff
计算范围长度,并将其除以中断数。将此值的倍数添加到要断开的向量的 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
这是一个针对 x
和 breaks
的任何值执行此操作的函数。
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
如果我没有指定任何边界而只写了所需的分割数,如何知道 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.
因此,使用 range
和 diff
计算范围长度,并将其除以中断数。将此值的倍数添加到要断开的向量的 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
这是一个针对 x
和 breaks
的任何值执行此操作的函数。
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