Dividi colonna in due colonne in R

  1. Usa la funzione separata per dividere la colonna in due colonne in R
  2. Usa la funzione extract per dividere la colonna in due colonne in R
  3. Usa la funzione str_split_fixed per dividere la colonna in due colonne in R

Questo articolo introdurrà come dividere una colonna in due colonne usando separate in R.

Usa la funzione separata per dividere la colonna in due colonne in R

separate fa parte del pacchetto tidyr e può essere usato per dividere una colonna di caratteri in più colonne con espressioni regolari o posizioni numeriche. In questo esempio di codice, dichiariamo un frame di dati che contiene stringhe separate da virgole di coppie nome/cognome. La funzione separate prende il frame di dati come primo argomento e il nome della colonna come secondo argomento. Il terzo argomento denota i nomi delle variabili che saranno i nomi delle colonne di un vettore di caratteri appena creato. Nota che usiamo la pipe %>% per passare l’oggetto df alla funzione separate. La stessa chiamata di funzione può essere invocata sul data frame dove nome e cognome sono delimitati da un punto separatore.

library(dplyr)
library(tidyr)
library(stringr)

df <- data.frame(x = c('John, Mae', 'Maude, Lebowski', 'Mia, Amy', 'Andy, James'))
df1 <- data.frame(x = c('John. Mae', 'Maude. Lebowski', 'Mia. Amy', 'Andy. James'))

df %>% separate(x, c('Name', 'Surname'))

df1 %>% separate(x, c('Name', 'Surname'))

Produzione:

> df %>% separate(x, c('Name', 'Surname'))
   Name   Surname
1  John       Mae
2 Maude  Lebowski
3   Mia       Amy
4  Andy     James

> df1 %>% separate(x, c('Name', 'Surname'))
   Name  Surname
1  John      Mae
2 Maude Lebowski
3   Mia      Amy
4  Andy    James

Usa la funzione extract per dividere la colonna in due colonne in R

Un’altra funzione utile per dividere una colonna in due separate è extract, anch’essa parte del pacchetto tidyr. La funzione extract funziona su colonne utilizzando gruppi di espressioni regolari. Si noti che ogni gruppo di espressioni regolari deve essere mappato agli elementi nel parametro precedente. Se i gruppi e gli elementi non corrispondono, l’output avrà valori NA.

library(dplyr)
library(tidyr)
library(stringr)

df <- data.frame(x = c('John, Mae', 'Maude, Lebowski', 'Mia, Amy', 'Andy, James'))

df %>% extract(x, c("Name", "Surname"), "([^,]+), ([^)]+)")

Produzione:

> df %>% extract(x, c("Name", "Surname"), "([^,]+), ([^)]+)")

   Name  Surname
1  John      Mae
2 Maude Lebowski
3   Mia      Amy
4  Andy    James

Usa la funzione str_split_fixed per dividere la colonna in due colonne in R

In alternativa, possiamo utilizzare la funzione str_split_fixed dal pacchetto stringr. Corrisponde al modello di carattere dato e divide il vettore di caratteri nel numero corrispondente di colonne. Tuttavia, l’utente può passare esplicitamente il numero di elementi divisi da restituire. Il numero di elementi viene passato come terzo argomento.

library(dplyr)
library(tidyr)
library(stringr)

df <- data.frame(x = c('John, Mae', 'Maude, Lebowski', 'Mia, Amy', 'Andy, James'))

str_split_fixed(df$x, ", ", 2)

Produzione:

> str_split_fixed(df$x, ", ", 2)
     [,1]    [,2]      
[1,] "John"  "Mae"     
[2,] "Maude" "Lebowski"
[3,] "Mia"   "Amy"     
[4,] "Andy"  "James"