У меня есть следующие данные с идентификатором и значением:
id <- c("1103-5","1103-5","1104-2","1104-2","1104-4","1104-4","1106-2","1106-2","1106-3","1106-3","2294-1","2294-1","2294-2","2294-2","2294-2","2294-3","2294-3","2294-3","2294-4","2294-4","2294-5","2294-5","2294-5","2300-1","2300-1","2300-2","2300-2","2300-4","2300-4","2321-1","2321-1","2321-2","2321-2","2321-3","2321-3","2321-4","2321-4","2347-1","2347-1","2347-2","2347-2")
value <- c(6,3,6,3,6,3,6,3,6,3,3,6,9,3,6,9,3,6,3,6,9,3,6,9,6,9,6,9,6,9,3,9,3,9,3,9,3,9,6,9,6)
Если вы заметили, есть несколько значений для одного и того же идентификатора. То, что я хотел бы сделать, это получить значения, которые только 3 и 6, только если идентификаторы одинаковы. например Идентификатор «1103-5» имеет 3 и 6, поэтому он должен быть в списке, но не «2347-2»
Я использую R
Один метод, который я попробовал, заключается в следующем, но он дает мне все со значениями 3 и 6.
d <- data.frame(id, value)
group36 <- d[d$value == 3 | d$value == 6,]
и
d %>% group_by(id) %>% filter(3 == value | 6 == value)
Вывод должен быть таким:
id value
1103-5 6
1103-5 3
1104-2 6
1104-2 3
1104-4 6
1104-4 3
1106-2 6
1106-2 3
1106-3 6
1106-3 3
2294-1 3
2294-1 6
2294-2 3
2294-2 6
2294-3 3
2294-3 6
2294-4 3
2294-4 6
2294-5 3
2294-5 6