Comment diviser une colonne en plusieurs colonnes dans R (avec exemples)



Vous pouvez utiliser l’une des deux méthodes suivantes pour diviser une colonne en plusieurs colonnes dans R :

Méthode 1 : utilisez str_split_fixed()

library(stringr)

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

Méthode 2 : utiliser séparé()

library(dplyr)
library(tidyr)

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

Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.

Méthode 1 : utilisez str_split_fixed()

Supposons que nous ayons le bloc de données suivant :

#create data frame
df <- data.frame(player=c('John_Wall', 'Dirk_Nowitzki', 'Steve_Nash'),
                 points=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

Nous pouvons utiliser la fonction str_split_fixed() du package stringr pour séparer la colonne ‘player’ en deux nouvelles colonnes appelées ‘First’ et ‘Last’ comme suit :

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

Notez que deux nouvelles colonnes sont ajoutées à la fin du bloc de données.

N’hésitez pas à réorganiser les colonnes et à supprimer les colonnes « joueur » d’origine si vous le souhaitez :

#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

Méthode 2 : utiliser séparé()

Le code suivant montre comment utiliser la fonction Separate() du package Tidyr pour séparer la colonne « player » en colonnes « première » et « dernière » :

library(dplyr)
library(tidyr)

#create data frame
df <- data.frame(player=c('John_Wall', 'Dirk_Nowitzki', 'Steve_Nash'),
                 points=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

Notez que la fonction Separate() séparera les chaînes en fonction de toute valeur non alphanumérique.

Par exemple, si le prénom et le nom étaient séparés par une virgule, la fonction Separate() serait automatiquement divisée en fonction de l’emplacement de la virgule :

library(dplyr)
library(tidyr)

#create data frame
df <- data.frame(player=c('John,Wall', 'Dirk,Nowitzki', 'Steve,Nash'),
                 points=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

Vous pouvez trouver la documentation complète en ligne de la fonction Separate() ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :

Comment combiner deux colonnes en une seule dans R
Comment trier un bloc de données par colonne dans R
Comment ajouter des colonnes au bloc de données dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *