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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *