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