Я ссылаюсь на уже отвеченный вопрос, который максимально приблизил меня: сопоставить / найти строки на основе нескольких требуемых значений в одной строке в R
Пример кадра данных:
test <- data.frame(grp=c(1,1,2,2,2,3,3,3,4,4,4,4,4),val=c("C","I","E","I","C","E","I","A","C","I","E","E","A"))
Я изменил ответ, чтобы он возвращал только значения GRP, соответствующие всем критериям.
library('dplyr')
test %>%
group_by(grp) %>%
summarise(matching = all(c("A", "I", "C") %in% val)) %>% filter(matching ==TRUE)
Здесь мне нужно просто вернуть количество GRPS, которые соответствуют критериям, так как одно числовое значение, которое можно вставить в одну ячейку отдельного кадра данных. Я пытаюсь найти совпадения для нескольких различных наборов критериев для одного и того же data.frame. (например, количество групп, которые соответствуют критериям AI и C; количество групп, которые соответствуют критериям E, A и I; количество групп, которые соответствуют критериям A, I и E; (et c.) )
В этом примере возвращается тиббл:
A tibble: 1 x 2
grp matching
<dbl> <lgl>
1 4 TRUE
Таким образом, существует один «grp», который соответствует определенному критерию. Мне нужно вернуть это число: 1.
, если моим критерием является только буква I, тогда я бы хотел, чтобы код возвращал число 4 , как и все группы (1, 2, 3 и 4) соответствуют букве I.
Если моим критерием является буква A, то я бы хотел, чтобы код возвращал число 2 , поскольку совпадают только группы 3 и 4 на букву А