كيفية دمج إطارات بيانات متعددة في لغة r (مع أمثلة)


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

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

 #put all data frames into list
df_list <- list(df1, df2, df3)

#merge all data frames into list
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)

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

 library (tidyverse)

#put all data frames into list
df_list <- list(df1, df2, df3)

#merge all data frames into list
df_list %>% reduce(full_join, by=' variable_name ')

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

الطريقة الأولى: دمج إطارات بيانات متعددة باستخدام Base R

لنفترض أن لدينا إطارات البيانات التالية في R:

 #define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
                  revenue=c(34, 36, 40, 49, 43))

df2 <- data. frame (id=c(1, 2, 5, 6, 7),
                  expenses=c(22, 26, 31, 40, 20))

df3 <- data. frame (id=c(1, 2, 4, 5, 7),
                  profit=c(12, 10, 14, 12, 9))

يمكننا استخدام بناء الجملة التالي لدمج جميع إطارات البيانات باستخدام وظائف R الأساسية:

 #put all data frames into list
df_list <- list(df1, df2, df3)      

#merge all data frames together
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)  

  id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9

لاحظ أن كل قيمة من قيم “المعرف” من كل كتلة بيانات أصلية يتم تضمينها في كتلة البيانات النهائية.

الطريقة الثانية: دمج إطارات بيانات متعددة باستخدام Tidyverse

لنفترض أن لدينا إطارات البيانات التالية في R:

 #define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
                  revenue=c(34, 36, 40, 49, 43))

df2 <- data. frame (id=c(1, 2, 5, 6, 7),
                  expenses=c(22, 26, 31, 40, 20))

df3 <- data. frame (id=c(1, 2, 4, 5, 7),
                  profit=c(12, 10, 14, 12, 9))

يمكننا استخدام الصيغة التالية لدمج جميع إطارات البيانات باستخدام وظائف من Tidyverse – مجموعة من الحزم المصممة لعلم البيانات في R:

 library (tidyverse)

#put all data frames into list
df_list <- list(df1, df2, df3)      

#merge all data frames together
df_list %>% reduce(full_join, by=' id ')

  id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9

لاحظ أن إطار البيانات النهائي يطابق إطار البيانات الذي أنتجناه باستخدام الطريقة الأولى.

ملحوظة : سيكون أسلوب Tidyverse أسرع بشكل ملحوظ إذا كنت تعمل مع إطارات بيانات كبيرة للغاية.

مصادر إضافية

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

كيفية دمج إطارات البيانات بناءً على أعمدة متعددة في R
كيفية تكديس أعمدة إطار البيانات في R
كيفية استخدام anti_join في R

Add a Comment

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