Как использовать 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 ) возвращаются, а столбец факторов ( Conference ) не возвращается.
Пример 2. Использование select_if() с типами классов и именами столбцов.
В следующем коде показано, как использовать функцию select_if() для выбора столбцов во фрейме данных, которые имеют тип факторного класса или имя столбца 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 2W 90 3 W 86 4 E 88 5 E 95
Обратите внимание, что возвращаются однофакторный столбец и столбец с меткойpoints_for .
Примечание : | Символ — это логический оператор «ИЛИ» в R. Не стесняйтесь использовать столько | символы, поскольку вы хотите выбрать столбцы, используя более двух условий.
Дополнительные ресурсы
В следующих руководствах объясняется, как использовать другие распространенные функции в dplyr:
Как использовать функциюthrough() в dplyr
Как использовать функцию relocate() в dplyr
Как использовать функцию среза() в dplyr