Сохранить столбец, если какая-либо строка содержит определенное значение в R

#r #dplyr

#r #dplyr

Вопрос:

Привет, у меня есть фрейм данных, такой как :

     COL1 COL2 COL3 COL4 COL5 
A   X    A    B    X    NA
B   NA   A    A    X    NA
C   NA   NA   A    NA   X
D   X    NA   NA   A    NA 
 

и я хотел бы удалить все столбцы, где их нет (значение A или B)

и получаем

     COL2 COL3 COL4
A   A    B    X
B   A    A    X
C   NA   A    NA
D   NA   NA   A 
 

Ответ №1:

Работает ли это:

 df[sapply(df, function(x) any(c('A','B') %in% x))]
# A tibble: 4 x 3
  COL2  COL3  COL4 
  <chr> <chr> <chr>
1 A     B     X    
2 A     A     X    
3 NA    A     NA   
4 NA    NA    A    
 

Используемые данные:

 df
# A tibble: 4 x 5
  COL1  COL2  COL3  COL4  COL5 
  <chr> <chr> <chr> <chr> <chr>
1 X     A     B     X     NA   
2 NA    A     A     X     NA   
3 NA    NA    A     NA    X    
4 X     NA    NA    A     NA   
 

Ответ №2:

tidyverse альтернатива, для развлечения :

 df %>%
  select(where(~ any(.x %in% c("A", "B"))))