#r #function #text #label
#r #функция #текст #ярлык
Вопрос:
я использую cut
функцию, :
my_data[, ageGroup :=cut(my_data$age,
breaks = c(0, ageBins),
include.lowest=TRUE,
labels = ageBins)]
где
breaks
[1] 0 6 18 29 49 59 69 99
в настоящее время мои ярлыки хранятся в векторе:
ageBins
[1] 6 18 29 49 59 69 99
Мне было интересно, как я могу создавать ярлыки функциональным способом, чтобы они указывали интервалы: 0-6, 6-18, 29-49 и т. Д.?
После этого я использую функцию разделения,
setNames(split(my_data, my_data$ageGroup),
unique(my_data$ageGroup))
и хотите, чтобы в списках были имена с соответствующими интервалами.
Комментарии:
1. Ваш вопрос неясен. Каков именно ваш желаемый результат? ярлыки на графике? или в новом столбце фрейма данных? вы также должны предоставить некоторые фиктивные data.so мы можем лучше помочь вам понять, как добраться туда, куда вам нужно.
Ответ №1:
Вы можете использовать вставку последовательно breaks
вместе.
ageBins <- c(6, 18, 29, 49, 59, 69, 99)
breaks = c(0, ageBins)
labels <- paste(breaks[-length(breaks)], breaks[-1], sep = '-')
#Also another way
#labels <- paste(head(breaks, -1), tail(breaks, -1), sep = '-')
labels
#[1] "0-6" "6-18" "18-29" "29-49" "49-59" "59-69" "69-99"
Ответ №2:
Вы могли бы сделать это с zoo::rollapply
помощью, но вам нужно будет передать его breaks
или инициализировать значение, ageBins
чтобы быть 0
:
library(zoo)
zoo::rollapply(breaks, width = 2, FUN = function(x) paste(x, collapse = "-"))
[1] "0-18" "18-29" "29-49" "49-59" "59-69" "69-99"
Или с помощью функции runner
из одноименной библиотеки:
library(runner)
runner::runner(breaks, function(x) paste(x, collapse = "-"), k = 2)[-1]
[1] "0-18" "18-29" "29-49" "49-59" "59-69" "69-99"