كيفية تقسيم عمود إلى أعمدة متعددة في r (مع أمثلة)


يمكنك استخدام إحدى الطريقتين لتقسيم عمود إلى أعمدة متعددة في R:

الطريقة الأولى: استخدام str_split_fixed()

 library (stringr)

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

الطريقة الثانية: استخدام منفصل ()

 library (dplyr)
library (tidyr)

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

توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا.

الطريقة الأولى: استخدام 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 لتقسيم عمود “اللاعب” إلى عمودين جديدين يسمى “الأول” و”الأخير” كما يلي:

 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

الطريقة الثانية: استخدام منفصل ()

يوضح التعليمة البرمجية التالية كيفية استخدام وظيفة 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

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *