У меня есть набор данных, состоящий из исследования временных рядов. Поскольку некоторые участники не появлялись в течение определенных дней, у них есть значения NA для остальной части массива данных, но определенные учебные дни были решающими, поэтому я пытаюсь подгруппировать свои данные для участников, которые не пропускают эти важные дни. Мой набор данных на самом деле очень большой, но вот общая структура:
fakedat <- data.frame(ID = c("A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "C",
"D", "D", "D", "D", "E", "E", "E", "E", "F", "F", "F", "F"),
StudyDay = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4,
1, 2, 3, 4),
Ab = c(10, NA, 15, 10, 10, 20, 10, NA, 10, 10, NA, 30, NA, NA, 15, NA, 10, 20,
10, 30, NA, 10, NA, 20))
Теперь предположим, что было критически важно, что они появятся на 2 и 4 день, я попробовал разделить подмножества с помощью фильтрации dplyr следующим образом:
fakedat2 <- fakedat %>%
dplyr::group_by(ID) %>%
dplyr::filter(StudyDay %in% c(2, 4) & !is.na(Ab)) %>%
dplyr:: ungroup()
РЕДАКТИРОВАТЬ: но вывод этого набора данных - это только список, если идентификаторы, имеющие 2 или 4, не являются значением NA. Мне нужно найти (в моих реальных данных) субъектов, у которых есть значения NA Ab в 4 конкретных учебных дня. Ответ, который я принял ниже, работает, но вам все еще интересно выполнить условную фильтрацию? Как и в SAS, вы можете кодировать IF Ab! = NA в (StudyDay = 2 AND StudyDay = 4) THEN ID .... или что-то в этом роде.