Een kolom in meerdere kolommen splitsen in r (met voorbeelden)
U kunt een van de volgende twee methoden gebruiken om een kolom in meerdere kolommen in R te splitsen:
Methode 1: Gebruik str_split_fixed()
library (stringr) df[c(' col1 ', ' col2 ')] <- str_split_fixed(df$original_column, ' sep ', 2)
Methode 2: Gebruik afzonderlijke()
library (dplyr) library (tidyr) df %>% separate(original_column, c(' col1 ', ' col2 '))
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken.
Methode 1: Gebruik str_split_fixed()
Stel dat we het volgende dataframe hebben:
#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
We kunnen de functie str_split_fixed() uit het stringr- pakket gebruiken om de kolom ‚player‘ als volgt in twee nieuwe kolommen te splitsen, genaamd ‚First‘ en ‚Last‘:
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
Houd er rekening mee dat er aan het einde van het gegevensframe twee nieuwe kolommen worden toegevoegd.
Voel je vrij om de kolommen opnieuw te rangschikken en de originele ’speler‘-kolommen te verwijderen als je dat wilt:
#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
Methode 2: Gebruik afzonderlijke()
De volgende code laat zien hoe u de functie Separate() van het Tidyr- pakket kunt gebruiken om de kolom „player“ te scheiden in de kolommen „first“ en „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
Houd er rekening mee dat de functie Separate() tekenreeksen scheidt op basis van een niet-alfanumerieke waarde.
Als de voor- en achternaam bijvoorbeeld worden gescheiden door een komma, wordt de functie Separate() automatisch gesplitst op basis van de locatie van de komma:
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
U kunt de volledige online documentatie voor de functie Separate() hier vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in R kunt uitvoeren:
Hoe twee kolommen te combineren tot één in R
Hoe een dataframe op kolom te sorteren in R
Kolommen toevoegen aan een dataframe in R