Як розділити стовпець на кілька стовпців у 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 , щоб розділити стовпець «player» на стовпці «first» і «last»:

 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *