Home > Net >  R - identify cols that contain any of a values set
R - identify cols that contain any of a values set

Time:12-30

I have a dataframe like this

df <- data.frame(col1 = c(letters[1:4],"a"),col2 = 1:5,col3 = letters[10:14])
 df
  col1 col2 col3
1    a    1    j
2    b    2    k
3    c    3    l
4    d    4    m
5    a    5    n

I would like to identify the columns that contain any value from the following vector:

vals=c("a","b","n","w")

A tidy solution would be awesome!

CodePudding user response:

We may use select

library(dplyr)
df %>% 
   select(where(~ any(. %in% vals, na.rm = TRUE)))

-output

   col1 col3
1    a    j
2    b    k
3    c    l
4    d    m
5    a    n

A similar option in base R is with Filter

Filter(\(x)  any(x %in% vals, na.rm = TRUE), df)
  col1 col3
1    a    j
2    b    k
3    c    l
4    d    m
5    a    n

CodePudding user response:

Another tidyverse option is to use keep() from purrr.

library(purrr)

df %>% 
  keep( ~ any(.x %in% vals))
  • Related