Вы можете использовать один из следующих двух методов, чтобы разделить один столбец на несколько столбцов в 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