Как использовать select_if с несколькими условиями в dplyr


Вы можете использовать следующий базовый синтаксис с функцией 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.