R'de bir sütunu birden çok sütuna bölme (örneklerle)
R’de bir sütunu birden çok sütuna bölmek için iki yöntemden birini kullanabilirsiniz:
Yöntem 1: str_split_fixed() işlevini kullanın
library (stringr) df[c(' col1 ', ' col2 ')] <- str_split_fixed(df$original_column, ' sep ', 2)
Yöntem 2: Ayrı() kullanın
library (dplyr) library (tidyr) df %>% separate(original_column, c(' col1 ', ' col2 '))
Aşağıdaki örnekler her yöntemin pratikte nasıl kullanılacağını göstermektedir.
Yöntem 1: str_split_fixed() işlevini kullanın
Aşağıdaki veri çerçevesine sahip olduğumuzu varsayalım:
#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
‘Player’ sütununu ‘First’ ve ‘Last’ olarak adlandırılan iki yeni sütuna bölmek için stringr paketindeki str_split_fixed() fonksiyonunu kullanabiliriz:
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
Veri çerçevesinin sonuna iki yeni sütunun eklendiğini unutmayın.
İsterseniz sütunları yeniden düzenleyebilir ve orijinal “oyuncu” sütunlarını kaldırabilirsiniz:
#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
Yöntem 2: Ayrı() kullanın
Aşağıdaki kod, “oyuncu” sütununu “ilk” ve “son” sütunlara ayırmak için Tidyr paketinin Different() işlevinin nasıl kullanılacağını gösterir:
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
Different() işlevinin dizeleri alfasayısal olmayan herhangi bir değere göre ayıracağını unutmayın.
Örneğin, ad ve soyadı virgülle ayrılmışsa, Different() işlevi virgülün konumuna göre otomatik olarak bölünür:
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
Different() işlevine ilişkin çevrimiçi belgelerin tamamını burada bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde R’de diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:
R’de iki sütun bir sütunda nasıl birleştirilir
R’de bir veri çerçevesi sütuna göre nasıl sıralanır
R’de veri çerçevesine sütunlar nasıl eklenir