#r
#r
Вопрос:
Я хотел бы отфильтровать 2 совпадающих значения столбца на основе условия группирования по. Например, из набора данных пациентов я должен сопоставить оба типа посещения 1 и 2, сгруппированных по идентификатору пациента.
Пока я использую следующий код.
patients %>% group_by(PatientID) %>% filter(VisitType == "6" and VisitType == "7")
Это, однако, ничего не возвращает (что, я думаю, связано с тем, что VisitType 6 и 7 — это разные строки). Есть ли способ фильтрации таким образом, чтобы я получал что-то вроде приведенного ниже:
PatientID VisitType
1 6
1 7
39 6
39 7
Комментарии:
1. Пожалуйста, поделитесь результатами
dput(patients)
2. Похоже, вы хотите знать, есть ли «6» и «7» в столбце VisitType внутри группы. Как насчет
filter("6" %in% VisitType, "7" %in% VisitType)
?3. Пожалуйста, опубликуйте воспроизводимый пример ваших данных и желаемый результат для этого образца данных . Люди пытаются вам помочь, но мы не сможем, если вы не дадите нам достаточно для проверки вашей проблемы.
Ответ №1:
Вам не нужно group_by()
просто фильтровать и упорядочивать, если это уже не будет в нужной форме.
patients %>%
filter(VisitType %in% c(6,7)) %>%
arrange(PatientID) # optional
Если вы хотите видеть только пациентов, у которых есть и то, и другое VisitType == 6 amp;amp; VisitType == 7
, то вам следует сделать что-то вроде
patients %>%
filter(VisitType %in% c(6,7)) %>%
group_by(PatientID) %>%
filter(n() >= 2)
Комментарии:
1. Однако это также позволяет выбирать для случаев, в которых всего 6 или 7. Я хотел бы видеть для всех пациентов, у которых в качестве типа посещения указаны 6 и 7. Вы предлагаете модификацию кода?
2. Отредактированный ответ все равно будет прерван, если идентификатор пациента содержит 6, но не 7 (например, 6 и 8)
3. @Frank Все, о чем я могу думать, это о том, сколько времени было потрачено впустую на этот вопрос, потому что они не будут публиковать повторную проверку своих данных.
4. @sparkh2o Смотри ответ сейчас. Это немного более подробно, чем хотелось бы, но действительно невозможно узнать, не видя ваших данных.