Как разделить столбец на несколько столбцов в R (с примерами)


Вы можете использовать один из следующих двух методов, чтобы разделить один столбец на несколько столбцов в R:

Способ 1: Используйте str_split_fixed()

library (stringr)

df[c('col1', 'col2')] <- str_split_fixed(df$original_column, 'sep', 2)

Способ 2: использовать отдельный()

library(dplyr)
library(tidyr)

df %>% separate(original_column, c('col1', 'col2'))

В следующих примерах показано, как использовать каждый метод на практике.

Способ 1: Используйте str_split_fixed()

Предположим, у нас есть следующий фрейм данных:

#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

Мы можем использовать функцию str_split_fixed() из пакета stringr , чтобы разделить столбец «игрок» на два новых столбца с именами «Первый» и «Последний» следующим образом:

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

Обратите внимание, что в конце фрейма данных добавлены два новых столбца.

Не стесняйтесь переставлять столбцы и удалять исходные столбцы «игрок», если хотите:

#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

Способ 2: использовать отдельный()

В следующем коде показано, как использовать функцию single () из пакета tidyr для разделения столбца «игрок» на «первый» и «последний» столбцы:

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

Обратите внимание, что функция split() будет разделять строки на основе любых значений, отличных от буквенно-цифровых.

Например, если имя и фамилия были разделены запятой, функция разделения() будет автоматически разделена в зависимости от расположения запятой:

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

Вы можете найти полную онлайн-документацию для отдельной функции здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в R:

Как объединить два столбца в один в R
Как отсортировать фрейм данных по столбцу в R
Как добавить столбцы во фрейм данных в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.