Dplyr で複数の条件で select_if を使用する方法


dplyrパッケージのselect_if()関数で次の基本構文を使用して、いくつかの条件のいずれかを満たすデータ フレーム内の列を選択できます。

 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

1 文字列 ( team ) と 2 つの数値列 ( 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

1 要素列と、 points_forというラベルの付いた列が返されることに注意してください。

: |記号は R の論理「OR」演算子です。 |をいくつでも自由に使用できます。 3 つ以上の条件を使用して列を選択するため、記号を使用します。

追加リソース

次のチュートリアルでは、dplyr の他の一般的な関数の使用方法を説明します。

dplyr で across() 関数を使用する方法
dplyrでrelocate()関数を使用する方法
dplyrでslice()関数を使用する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です