筛选满足一列中多个条件的行

时间:2019-10-01 21:34:33

标签: r filter dplyr conditional-statements subset

我试图对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

它没有返回结果

1 个答案:

答案 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
相关问题