كيفية تقسيم عمود إلى أعمدة متعددة في 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