Я ищу способ применения dplyr recode_factor
, когда уровень, который я хочу изменить, не известен заранее.Например, я хотел бы применить cut(5)
к столбцу и настроить первый уровень (interval)
, чтобы он начинался с 0
.
set.seed(42)
library(dplyr)
library(stringr)
x <- rgamma(100, 1)
x_cut <- x %>% cut(5)
old_level <- levels(x_cut)[[1]]
new_level <- old_level %>% str_extract_all("[0-9]+\\.([0-9]+)",simplify=TRUE) %>% `[`(2) %>% paste0("(0,",.,"]")
x_cut %>% recode_factor( old_level = new_level) %>% levels
, но это, похоже, не работает.
Я ожидаю увидеть
[1] "(0,1.38]" "(1.38,2.75]" "(2.75,4.12]" "(4.12,5.49]" "(5.49,6.87]"
, но ничего не изменилось, и я получаю
[1] "(0.00388,1.38]" "(1.38,2.75]" "(2.75,4.12]" "(4.12,5.49]" "(5.49,6.87]"