У меня есть фрейм данных с различными значениями гематологии и временем их сбора. Эти значения должны собираться только в определенные c раз, но иногда добавляется дополнительное. Я хочу удалить все случаи, когда значение было собрано вне запланированного времени.
Чтобы проиллюстрировать эту проблему, вот некоторый код для создания очень упрощенной версии фрейма данных, с которым я работаю (плюс некоторые примеры расписаний). ):
example <- tibble("Parameter" = c(rep("hgb", 3), rep("bili", 3), rep("LDH", 3)),
"Collection" = c(1, 3, 4, 1, 5, 6, 0, 4, 8))
hgb_sampling <- c(1, 4)
bili_sampling <- c(1, 5)
ldh_sampling <- c(0, 4)
Итак, мне нужен способ условно применить фильтр на основе значения в столбце Параметр. Решение должно вписаться в конвейер dyplr и дать что-то вроде этого:
filtered <- tibble("Parameter" = c(rep("hemoglobin", 2), rep("bilirubin", 2), rep("LDH", 2)),
"Collection" = c(1, 4, 1, 5, 0, 4))
Я пробовал пару вещей (все они равносильны приведенному ниже), но использование «Параметра» отключает вещи up:
df <- example %>%
{if (Parameter == "hgb") filter(., Collection %in% hgb_sampling)}
Есть предложения?