R で列を複数の列に分割する方法 (例あり)


R で 1 つの列を複数の列に分割するには、次の 2 つの方法のいずれかを使用できます。

方法 1: str_split_fixed() を使用する

 library (stringr)

df[c(' col1 ', ' col2 ')] <- str_split_fixed(df$original_column, ' sep ', 2)

方法 2: Separate() を使用する

 library (dplyr)
library (tidyr)

df %>% separate(original_column, c(' col1 ', ' col2 '))

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

方法 1: str_split_fixed() を使用する

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

 #create data frame
df <- data. frame (player=c('John_Wall', 'Dirk_Nowitzki', 'Steve_Nash'),
                 dots=c(22, 29, 18),
                 assists=c(8, 4, 15))

#view data frame
df

         player points assists
1 John_Wall 22 8
2 Dirk_Nowitzki 29 4
3 Steve_Nash 18 15

次のように、 stringrパッケージのstr_split_fixed()関数を使用して、「player」列を「First」と「Last」という 2 つの新しい列に分割できます。

 library (stringr)

#split 'player' column using '_' as the separator
df[c(' First ', ' Last ')] <- str_split_fixed(df$player, ' _ ', 2)

#view updated data frame
df

         player points assists First Last
1 John_Wall 22 8 John Wall
2 Dirk_Nowitzki 29 4 Dirk Nowitzki
3 Steve_Nash 18 15 Steve Nash

データ フレームの最後に 2 つの新しい列が追加されることに注意してください。

必要に応じて、自由に列を再配置したり、元の「プレイヤー」列を削除したりできます。

 #rearrange columns and leave out original 'player' column
df_final <- df[c('First', 'Last', 'points', 'assists')]

#view updated data frame
df_final

  First Last points assists
1 John Wall 22 8
2 Dirk Nowitzki 29 4
3 Steve Nash 18 15

方法 2: Separate() を使用する

次のコードは、 TidyrパッケージのSeparate()関数を使用して、「player」列を「first」列と「last」列に分離する方法を示しています。

 library (dplyr)
library (tidyr)

#create data frame
df <- data. frame (player=c('John_Wall', 'Dirk_Nowitzki', 'Steve_Nash'),
                 dots=c(22, 29, 18),
                 assists=c(8, 4, 15))

#separate 'player' column into 'First' and 'Last'
df %>% separate(player, c(' First ', ' Last '))

  First Last points assists
1 John Wall 22 8
2 Dirk Nowitzki 29 4
3 Steve Nash 18 15

Separate()関数は、英数字以外の値に基づいて文字列を区切ることに注意してください。

たとえば、姓と名がカンマで区切られている場合、 Separate()関数はカンマの位置に基づいて自動的に分割されます。

 library (dplyr)
library (tidyr)

#create data frame
df <- data. frame (player=c('John,Wall', 'Dirk,Nowitzki', 'Steve,Nash'),
                 dots=c(22, 29, 18),
                 assists=c(8, 4, 15))

#separate 'player' column into 'First' and 'Last'
df %>% separate(player, c(' First ', ' Last '))

  First Last points assists
1 John Wall 22 8
2 Dirk Nowitzki 29 4
3 Steve Nash 18 15

Separate()関数の完全なオンライン ドキュメントは、ここで見つけることができます。

追加リソース

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

R で 2 つの列を 1 つに結合する方法
R でデータ フレームを列ごとに並べ替える方法
Rでデータフレームに列を追加する方法

コメントを追加する

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