كيفية عمل صلة خارجية في r (مع أمثلة)


هناك طريقتان شائعتان لإجراء صلة خارجية في R:

الطريقة الأولى: استخدم Base R

 merge(df1, df2, by=' column_to_join_on ', all= TRUE )

الطريقة الثانية: استخدم dplyr

 library (dplyr)

full_join(df1, df2, by=' column_to_join_on ')

ستقوم كل طريقة بإرجاع كافة الصفوف من كلا الجدولين.

ستنتج كلتا الطريقتين نفس النتيجة، لكن طريقة dplyr ستميل إلى الأداء بشكل أسرع على مجموعات البيانات الكبيرة للغاية.

توضح الأمثلة التالية كيفية استخدام كل من هذه الوظائف عمليًا مع إطارات البيانات التالية:

 #define first data frame
df1 = data. frame (team=c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'),
                 points=c(18, 22, 19, 14, 14, 11, 20, 28))

df1

  team points
1 to 18
2 B 22
3 C 19
4 D 14
5 E 14
6 F 11
7 G 20
8:28 a.m.

#define second data frame
df2 = data. frame (team=c('A', 'B', 'C', 'D', 'L', 'M'),
                 assists=c(4, 9, 14, 13, 10, 8))

df2

  team assists
1 to 4
2 B 9
3 C 14
4 D 13
5 L 10
6 M 8

مثال 1: الانضمام الخارجي باستخدام Base R

يمكننا استخدام الدالة merge() في قاعدة R لإجراء صلة خارجية، باستخدام عمود “الفريق” كعمود للانضمام إليه:

 #perform outer join using base R
df3 <- merge(df1, df2, by=' team ', all= TRUE )

#view result
df3

   team points assists
1 to 18 4
2 B 22 9
3 C 19 14
4 D 14 13
5 E 14 NA
6 F 11 NA
7 G 20 NA
8:28 AM NA
9L NA 10
10M NA 8

لاحظ أنه يتم إرجاع كافة الصفوف في كلا إطاري البيانات.

مثال 2: الانضمام الخارجي باستخدام dplyr

يمكننا استخدام الدالة full_join() ‎ من الحزمة dplyr لإجراء صلة خارجية، باستخدام عمود “الفريق” كعمود للانضمام إليه:

 library (dplyr)

#perform outer join using dplyr 
df3 <- full_join(df1, df2, by=' team ')

#view result
df3

   team points assists
1 to 18 4
2 B 22 9
3 C 19 14
4 D 14 13
5 E 14 NA
6 F 11 NA
7 G 20 NA
8:28 AM NA
9L NA 10
10M NA 8

لاحظ أن هذا يتوافق مع النتيجة التي حصلنا عليها باستخدام الدالة merge() في الأساس R.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في R:

كيفية القيام بالانضمام الأيسر في R
كيفية القيام بالانضمام الصحيح في R
كيفية القيام بصلة داخلية في R

Add a Comment

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