Как разделить столбец на несколько столбцов в 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'),
                 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

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

 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: используйте отдельный()

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

 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

Обратите внимание, что функция Separate() разделяет строки на основе любого небуквенно-цифрового значения.

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

 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

Полную онлайн-документацию по функции Separate() можно найти здесь .

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *