我试图对ID与同一列中的两个值相关联的行进行子集化或过滤(每个ID和相关条件“ DIR”都有一行)
我无法在dplyr过滤器或子集函数中找到答案
x <- data.frame("ID"=c(1,2,2,3,3,3,4,4,4,4),
"DIR"=c("up","up","down","up","up","up","down","down","down","down"))
我尝试了两种方式:
subset(x, DIR=="up" & DIR=="down")
x %>% group_by(ID) %>% filter(DIR=="up" & DIR=="down")
我想要的是保留ID ID 2的两行,因为它是DIR列中唯一同时具有“ up”和“ down”的ID
它没有返回结果
答案 0 :(得分:1)
按“ ID”分组后,通过检查filter
all
的元素是vector
列“ DIR”来c("up", "down")
/ p>
%in%
或使用library(dplyr)
x %>%
group_by(ID) %>%
filter(all(c("up", "down") %in% DIR) )
# A tibble: 2 x 2
# Groups: ID [1]
# ID DIR
# <dbl> <fct>
#1 2 up
#2 2 down
base R