создание ярлыков из ячеек

#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"