Я хотел бы написать функцию, которая создает переменную биннинга на основе некоторых необработанных данных. В частности, у меня есть набор дат со значениями возраста для каждого респондента, и я хотел бы написать функцию, которая классифицирует этого человека в возрастную группу, где возрастная группа является параметром этой функции.
Вот что Я начал с:
data <- data.frame(age = 18:100)
foo <- function(data, brackets = list(18:24, 25:34, 35:59)) {
require(tidyverse)
tmp <- data %>%
drop_na(age) %>%
mutate(age_bracket = case_when(age %in% brackets[[1]] ~ paste(brackets[[1]][1], "to", brackets[[1]][length(brackets[[1]])]),
age %in% brackets[[2]] ~ paste(brackets[[2]][1], "to", brackets[[2]][length(brackets[[2]])]),
age %in% brackets[[3]] ~ paste(brackets[[3]][1], "to", brackets[[3]][length(brackets[[3]])])))
print(tmp)
}
Как видно, часть case_when очень негибкая, так как мне нужно заранее указать количество скобок. Это также довольно долго. Я хотел бы написать что-то вроде l oop, которое смотрит на количество элементов в аргументе в скобках и соответственно создает эти скобки. Поэтому, если я хочу добавить возрастную группу 60: Inf, функция должна добавить другую возрастную группу.
После поиска в Интернете я обнаружил, что некоторые используют искаженные выражения (например, квос). Я совершенно не знаком с ними, поэтому изо всех сил стараюсь использовать их для своих целей.