Вы можете использовать следующий базовый синтаксис с функцией select_if() из пакета dplyr для выбора столбцов во фрейме данных, которые удовлетворяют одному из нескольких условий:
df %>% select_if( function (x) condition1 | condition2)
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: Использование select_if() с типами классов
В следующем коде показано, как использовать функцию select_if() для выбора столбцов во фрейме данных, которые имеют символьный или числовой тип класса:
library(dplyr)
#create data frame
df <- data.frame(team=c('A', 'B', 'C', 'D', 'E'),
conference=as. factor (c('W', 'W', 'W', 'E', 'E')),
points_for=c(99, 90, 86, 88, 95),
points_against=c(91, 80, 88, 86, 93))
#select all character and numeric columns
df %>% select_if( function (x) is. character (x) | is. numeric (x))
team points_for points_against
1 A 99 91
2 B 90 80
3 C 86 88
4 D 88 86
5 E 95 93
Обратите внимание, что столбец с одним символом ( team ) и два числовых столбца ( points_for и points_against ) возвращаются, а столбец фактора ( конференция ) не возвращается.
Пример 2. Использование select_if() с типами классов и именами столбцов
В следующем коде показано, как использовать функцию select_if() для выбора столбцов во фрейме данных, которые имеют тип класса factor или имеют имя столбца points_for :
library(dplyr)
#create data frame
df <- data.frame(team=c('A', 'B', 'C', 'D', 'E'),
conference=as. factor (c('W', 'W', 'W', 'E', 'E')),
points_for=c(99, 90, 86, 88, 95),
points_against=c(91, 80, 88, 86, 93))
#select all factor columns and 'points_for' column
df %>% select_if( function (x) is. factor (x) | all(x == .$points_for))
conference points_for
1 W 99
2 W 90
3 W 86
4 E 88
5 E 95
Обратите внимание, что возвращаются один столбец факторов и один столбец с названием points_for .
Примечание : | является логическим оператором «ИЛИ» в R. Не стесняйтесь использовать столько | символы, так как вы хотите выбрать столбцы, используя более двух условий.
Дополнительные ресурсы
В следующих руководствах объясняется, как использовать другие распространенные функции в dplyr:
Как использовать функцию cross() в dplyr
Как использовать функцию relocate() в dplyr
Как использовать функцию slice() в dplyr