Dplyr を使用して複数の列を因子に変換する方法


dplyrパッケージの関数を使用して、次の方法を使用して複数の列を因子に変換できます。

方法 1: 特定の列を因子に変換する

 library (dplyr) 

df %>% mutate_at(c(' col1 ', ' col2 '), as. factor )

方法 2: すべての文字列を因数に変換する

 library (dplyr)

df %>% mutate_if(is. character , as. factor )

次の例は、各メソッドを実際に使用する方法を示しています。  

例 1: 特定の列を因子に変換する

R に次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'D'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
                 starter=c('Y', 'Y', 'Y', 'N', 'N', 'Y', 'N', 'N'),
                 points=c(12, 24, 25, 35, 30, 14, 19, 11))

#view structure of data frame
str(df)

'data.frame': 8 obs. of 4 variables:
 $ team: chr "A" "A" "A" "B" ...
 $position: chr "G" "G" "F" "F" ...
 $ starter: chr "Y" "Y" "Y" "N" ...
 $ points: num 12 24 25 35 30 14 19 11

チームポジションスターターの列は文字であり、ポイントの列は数値であることがわかります。

チーム列ポジション列のみを因子に変換するには、次の構文を使用できます。

 library (dplyr) 

#convert team and position columns to factor
df <- df %>% mutate_at(c(' team ', ' position '), as. factor )

#view structure of updated data frame
str(df)

'data.frame': 8 obs. of 4 variables:
 $ team: Factor w/ 4 levels "A","B","C","D": 1 1 1 2 2 3 3 4
 $ position: Factor w/ 2 levels "F","G": 2 2 1 1 2 2 1 1
 $ starter: chr "Y" "Y" "Y" "N" ...
 $ points: num 12 24 25 35 30 14 19 11

チームポジションの列が両方の要素になっていることがわかります。

例 2: すべての文字列を因数に変換する

R に次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'D'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
                 starter=c('Y', 'Y', 'Y', 'N', 'N', 'Y', 'N', 'N'),
                 points=c(12, 24, 25, 35, 30, 14, 19, 11))

#view structure of data frame
str(df)

'data.frame': 8 obs. of 4 variables:
 $ team: chr "A" "A" "A" "B" ...
 $position: chr "G" "G" "F" "F" ...
 $ starter: chr "Y" "Y" "Y" "N" ...
 $ points: num 12 24 25 35 30 14 19 11

データ フレーム内の 3 つの列が文字列であることがわかります。

すべての文字列を因子に変換するには、次の構文を使用できます。

 library (dplyr) 

#convert all character columns to factor
df <- df %>% mutate_if(is. character , as. factor )

#view structure of updated data frame
str(df)

'data.frame': 8 obs. of 4 variables:
 $ team: Factor w/ 4 levels "A","B","C","D": 1 1 1 2 2 3 3 4
 $ position: Factor w/ 2 levels "F","G": 2 2 1 1 2 2 1 1
 $ starter: Factor w/ 2 levels "N","Y": 2 2 2 1 1 2 1 1
 $ points: num 12 24 25 35 30 14 19 11

すべての文字列が因子になっていることがわかります。

: mutate_at関数とmutate_if関数の詳細については、dplyr ドキュメント ページを参照してください。

追加リソース

次のチュートリアルでは、R で他の一般的な操作を実行する方法について説明します。

dplyr を使用して複数の列を数値に変換する方法
R で因数を数値に変換する方法
Rで日付を数値に変換する方法

コメントを追加する

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