【发布时间】:2020-12-24 18:49:41
【问题描述】:
基本的cut 函数和dplyr cut_* 函数都离散化连续变量。但这些都不能指定包含在离散区间中的上限/下限。
例如,在下面的例子中使用cut_number
library(tidyverse)
set.seed(901)
df = tibble(x =runif(min = 0.1, max = 0.9, n = 5)) %>%
arrange(x)
df = df %>%
mutate(x_binned = cut_number(x, n=3))
df
#> # A tibble: 5 x 2
#> x x_binned
#> <dbl> <fct>
#> 1 0.187 [0.187,0.529]
#> 2 0.524 [0.187,0.529]
#> 3 0.540 (0.529,0.671]
#> 4 0.737 (0.671,0.768]
#> 5 0.768 (0.671,0.768]
由reprex package (v0.3.0) 于 2020 年 12 月 24 日创建
底部区间为[0.187, 0.529],顶部区间为[0.671, 0.768]。但我需要包含 0 和 1 的间隔,或者是 [0, 0.529] 和 [0.671, 1.0]。在离散连续变量时,是否有一种简单的方法来指定这些界限?
【问题讨论】:
-
鉴于您的
runif分布的下限为 0.1,在可能的采样值范围以下包含下限 (0) 意味着什么? -
您可以使用
case_when或其基本等效项switch来构建一个支持在向量上定义双端封闭区间的函数。 (我尽量避免嵌套或级联ifelse解决方案。)