У меня есть набор данных ответов на опросы из большого числа стран, которые я хотел бы сократить в соответствии с возрастными диапазонами, указанными в данных переписи (другой набор данных). Я извлек диапазоны возраста из данных переписи в список и преобразовал их в векторы контрольных точек для каждой страны.
Я хотел бы использовать этот список контрольных точек для преобразования переменной возраста в age_ranges (так что я могу в конечном итоге сравнить разбивку по возрасту данных обследования с разбивкой по возрасту переписи).
Это код, который у меня есть до сих пор:
age <- sample(18:50, 100, replace = TRUE)
group <- sample(c("group A", "group B", "group C"), 100, replace = TRUE)
df <- data.frame(age, group)
cutpoints <- list(group A = c(18, 27, 36, 45), group B = c(15, 24, 50), group C = c(30, 40, 50, 60, 70))
df %>%
group_by(group) %>%
mutate(cut_group =
cut(age,cutpoints))
Где точки вырезки - это именованный список. Имена соответствуют «группе» (страна в моем случае), а точки отсечения - это векторы нижних нижних границ, по которым я хотел бы сократить переменную возраста. Опять же, эти контрольные точки варьируются от страны к стране.
Приведенный выше код выдает сообщение об ошибке Error in sort.int(as.double(breaks)) :
(list) object cannot be coerced to type 'double'
Я просматривал эту запись, но приведенный выше код по существу следует инструкции, но все равно приводят к ошибке.