Come dividere una colonna in più colonne in r (con esempi)
Puoi utilizzare uno dei due metodi per dividere una colonna in più colonne in R:
Metodo 1: utilizzare str_split_fixed()
library (stringr) df[c(' col1 ', ' col2 ')] <- str_split_fixed(df$original_column, ' sep ', 2)
Metodo 2: utilizzare separate()
library (dplyr) library (tidyr) df %>% separate(original_column, c(' col1 ', ' col2 '))
Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.
Metodo 1: utilizzare str_split_fixed()
Supponiamo di avere il seguente frame di dati:
#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
Possiamo usare la funzione str_split_fixed() dal pacchetto stringr per dividere la colonna ‘player’ in due nuove colonne chiamate ‘First’ e ‘Last’ come segue:
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
Si noti che due nuove colonne vengono aggiunte alla fine del frame di dati.
Sentiti libero di riorganizzare le colonne e rimuovere le colonne originali “giocatore” se lo desideri:
#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
Metodo 2: utilizzare separate()
Il codice seguente mostra come utilizzare la funzione Separate() del pacchetto Tidyr per separare la colonna “giocatore” nelle colonne “primo” e “ultimo”:
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
Tieni presente che la funzione Separate() separerà le stringhe in base a qualsiasi valore non alfanumerico.
Ad esempio, se il nome e il cognome fossero separati da una virgola, la funzione Separate() verrebbe automaticamente divisa in base alla posizione della virgola:
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
Puoi trovare la documentazione online completa per la funzione Separate() qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni in R:
Come combinare due colonne in una in R
Come ordinare un frame di dati per colonna in R
Come aggiungere colonne al frame di dati in R