Мне нужно категоризировать строки кадра данных R на основе набора критериев категории, заданных в другом кадре данных. Критерии определяют несколько категорий на основе диапазонов значений нескольких столбцов («признаков») в основном фрейме данных.
Используя mtcars
в качестве примера фрейма данных для категоризации, вот фрейм данных, определяющий категории:
criteria <- data.frame(category = c("high", "high", "high", "medium", "medium", "low", "low"),
trait = c("mpg", "cyl", "wt", "mpg", "cyl", "mpg", "cyl"),
min.val = c(20, 6, NA, 20, 4, 15, 6),
max.val = c(NA, 8, 3, NA, 6, 20, 8))
Это означает, например, что для строки, которая должна быть отнесена к категории " high ", он должен иметь мили на галлон больше 20, цил между 6 и 8 и вес меньше 3. Выходные данные будут идентичны исходному кадру данных mtcars
, но с дополнительным столбцом с именем« category », который содержит значения «высокий», «средний», «низкий» и NA для всего, что не соответствует критериям ни одной из категорий.
Решение должно быть независимым от (1) названия категории и ( 2) имя столбца характеристик, чтобы пользователь мог просто предоставить таблицу критериев с именами настраиваемых категорий и любым набором столбцов характеристик, которые они sh.
У меня такое ощущение, что решение может включать сложное применение dplyr::filter_at()
, но не могу понять, как применить эту функцию к нескольким столбцам, каждый из которых имеет свой набор критериев.