كيفية تبديل DataFrame في R.

Kyfyt Tbdyl Dataframe Fy R



يعد نقل مجموعة البيانات إحدى هذه العمليات التي تعمل على إصلاح البيانات لتلبية المتطلبات المحددة للتحليل. يتضمن تبديل مجموعة البيانات صفوفًا وأعمدة مقلوبة لمجموعة البيانات ، مما ينتج عنه مجموعة بيانات جديدة بأعمدة وصفوف مبدلة. يوفر R بعض الوظائف لنقل مجموعة البيانات. في هذه المقالة ، سنغطي طرق النقل المختلفة لأطر البيانات في R.

مثال 1: تبديل إطار البيانات باستخدام الدالة T () في R.

الدالة t () هي دالة مضمنة في R تُستخدم لنقل إطار البيانات. ومع ذلك ، فإنه يحول DataFrame إلى مصفوفة ، لذلك يتم تحويل أي عمود غير رقمي إلى سلاسل أحرف. ضع في اعتبارك البرنامج النصي R التالي لنقل DataFrame:







MyData = data.frame (c1 = c (1، 2، 3، 4، 5) ،

ج 2 = ج (6 ، 7 ، 8 ، 9 ، 10) ،
ج 3 = ج (11 ، 12 ، 13 ، 14 ، 15))

row.names (MyData) = c ('r1'، 'r2'، 'r3'، 'r4'، 'r5')

t (بياناتي)

هنا ، نعلن عن متجه MyData وقمنا بتعيين data.frame () إليه. نقوم بإدخال بيانات العينة التي تحتوي على ثلاثة أعمدة مع القيم داخل وظيفة data.frame (). بعد ذلك ، نستخدم وظيفة 'row.names ()' وقمنا بتعيين أسماء الصفوف لقيم 'MyData' DataFrame. أخيرًا ، قمنا بنقل 'MyData' DataFrame باستخدام وظيفة t ().



يُظهر الإخراج التالي تبديل DataFrame حيث تصبح أسماء الصف الخاصة بإطار DataFrame الأصلي هي أسماء الأعمدة الخاصة بإطار DataFrame المنقولة ، ويتم فقدان أسماء الأعمدة الخاصة بإطار DataFrame الأصلي في النقل:







مثال 2: قم بتغيير موضع إطار البيانات باستخدام دالة Transpose () في R.

يمكن أيضًا استخدام وظيفة Transpose () من حزمة “data.table” لنقل DataFrame وإرجاع DataFrame. لذلك ، علينا التأكد من تثبيت 'data.table' في R. إذا لم يتم العثور عليه ، فيمكننا تثبيته بالأمر التالي:

install.packages ('data.table')

الآن ، يمكننا بسهولة استيراد حزمة 'data.table' للوصول إلى وظيفة Transpose () في R لتغيير موضع DataFrame. ضع في اعتبارك رمز R التالي حيث يتم استدعاء وظيفة Transpose () لتحويل DataFrame:



df <- data.frame (A = c (1: 5) ،

ب = ج (6:10) ،
ج = ج (11:15))


row.names (df) <- c ('r1'، 'r2'، 'r3'، 'r4'، 'r5')

مدافع

هنا ، نقوم بإنشاء 'df' DataFrame بثلاثة أعمدة وخمسة صفوف حيث يحتوي كل عمود على سلسلة من الأرقام من 1 إلى 5 ومن 6 إلى 10 ومن 11 إلى 15 على التوالي. بالإضافة إلى ذلك ، نقوم بتعيين أسماء صفوف DataFrame باستخدام الدالة row.names (). بعد ذلك ، نقوم بطباعة DataFrame الأصلي إلى وحدة التحكم.

يظهر إطار البيانات الأصلي على الشاشة هنا:

بعد ذلك ، نقوم بنقل 'df' DataFrame الأصلي عن طريق تبديل الصفوف والأعمدة في DataFrame.

مكتبة (جدول البيانات)

df_trans <- تبديل (df)

أسماء rownames (df_trans) <- أسماء الأعمدة (df)

colnames (df_trans) <- أسماء rownames (df)

df_trans

لهذا ، نقوم أولاً بتحميل مكتبة 'data.table' التي توفر الأدوات للعمل مع البيانات المجدولة في R. ثم ، يتم استخدام وظيفة Transpose () من مكتبة 'data.table'. يتم تعيين DataFrame الناتج المحول إلى متغير جديد وهو 'df_t'. بعد ذلك ، نقوم بتعيين أسماء الأعمدة الخاصة بـ 'df' DataFrame الأصلي كأسماء صف إلى DataFrame المنقولة 'df_trans' باستخدام وظيفة rownames (). بعد ذلك ، يتم تعيين أسماء الصفوف الخاصة بـ 'df' DataFrame الأصلي كأسماء أعمدة إلى DataFrame المنقولة 'df_trans' باستخدام وظيفة colnames ().

وبالتالي ، يتم تحقيق نقل DataFrame الأصلي في الإخراج. إنه يمثل كل خلية في DataFrame المنقولة حيث تحتوي على نفس القيمة مثل الخلية المقابلة في DataFrame الأصلي ولكن في موضع مختلف بسبب التحويل.

مثال 3: تبديل DataFrame باستخدام الدالة Tidyr Library Gather () في R.

يمكن استخدام حزمة tidyr لـ R لنقل إطار DataFrame. هذه الطريقة مفيدة عندما نريد تحويل DataFrame من تنسيق عريض إلى تنسيق طويل ، ثم العودة إلى تنسيق عريض باستخدام صفوف وأعمدة متبادلة. يوفر العديد من الوظائف لتحويل البيانات وإعادة تنظيمها. قبل ذلك ، نحتاج إلى تنزيل حزمة tidyr على وجه التحديد باستخدام الأمر التالي:

install.packages ('tidyr')

دعونا ننظر في كود R التالي. نستخدم وظيفة التجميع () لهذه الحزمة لنقل إطار DataFrame الواسع لفترة أطول:

مكتبة (tidyr)

ن = 10

tidy_df = data.frame (

المعرف = c (1: n) ،
Exam1_Marks = ج (73 ، 219 ، 86 ، 192 ، 99 ،
188 ، 72 ، 35 ، 91 ، 165) ،
Exam2_Marks = ج (217 ، 89 ، 66 ، 334 ، 99 ،
101 ، 108 ، 233 ، 45 ، 300) ،
Exam3_Marks = ج (39 ، 101 ، 209 ، 289 ، 176 ،
120 ، 89 ، 119 ، 199 ، 96))

tidy_df

هنا ، يتم تحويل DataFrame 'واسع' إلى DataFrame 'طويل' باستخدام tidyr. أولاً ، نقوم بإنشاء 'tidy_df' DataFrame بثلاثة أعمدة. يحتوي كل عمود من هذه الأعمدة على 10 قيم.

يظهر إطار DataFrame الطويل في شاشة الإخراج التالية:

بعد ذلك ، نقوم بتمرير 'tidy_df' DataFrame إلى وظيفة التجميع () باستخدام عامل تشغيل الأنابيب '٪>٪'. تُستخدم وظيفة التجميع () من المدّ لتحويل “tidy_df” إلى إطار بيانات طويل. تأخذ الوظيفة () () مدخلات باسم 'Exams' الذي يشير إلى عمود جديد يحتوي على أسماء المتغيرات التي تم إنشاؤها في التحويل. تحدد 'العلامات' العمود الذي يجمع 'Exam1_Marks' و 'Exam2_Marks' معًا.

طويل <- tidy_df٪>٪

جمع (الامتحانات ، العلامات ،
Exam1_Marks: Exam2_Marks)


طويل

يعرض الإخراج إطار DataFrame الطويل لوحدة التحكم التي لها الآن تنسيق 'طويل' بثلاثة أعمدة:

مثال 4: تبديل إطار البيانات باستخدام الدالة Pivot_Wider () في R.

الوظيفة المتقدمة التالية التي نستخدمها لتحويل DataFrame هي وظيفة pivot_wider (). pivot_wider () هي وظيفة من حزمة المدّ في R والتي تسمح لنا بتحويل DataFrame 'طويل' إلى DataFrame 'واسع'. تأخذ الوظيفة ثلاث وسيطات رئيسية تمت مناقشتها في الكود التالي لـ R:

مكتبة (tidyr)

df <- data.frame (

معرف = ج (1 ، 2 ، 3 ، 1 ، 2 ، 3) ،
  var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
فال = ج (4 ، 5 ، 6 ، 7 ، 8 ، 9)


)

مدافع

هنا ، نقوم أولاً بتحميل حزمة tidyr باستخدام وظيفة library (). بعد ذلك ، قمنا بتعيين نموذج DataFrame في 'df'. يحتوي 'df' DataFrame على ثلاثة أعمدة تحتوي على قيم مختلفة ، وفقًا لذلك. يمكن رؤية نموذج DataFrame في الإخراج التالي:

بعد ذلك ، يتم استخدام وظيفة pivot_wider () من المدّ لتحويل “df” إلى “df_wide”.

df_wide <- pivot_wider (df ، names_from = var ، values_from = val)

df_ على مستوى العالم

تأخذ الدالة pivot_wider () ثلاث وسيطات هنا. أولاً ، يتطلب الأمر تحويل إطار البيانات 'df'. بعد ذلك ، تحدد الوسيطة names_from اسم العمود الذي سيتم استخدامه لأسماء المتغيرات الجديدة. أخيرًا ، تحدد الوسيطة value_from اسم العمود الذي سيتم استخدامه للقيم الجديدة.

يمثل الإخراج التالي نقل إطار البيانات الطويل إلى DataFrame الواسع:

خاتمة

استخدمنا طرقًا مختلفة لتغيير موضع إطار البيانات في R. تم تعيين المثال الأول بطريقة t () المضمنة. احتاجت جميع الأمثلة الأخرى إلى استيراد الحزم حتى نتمكن من استخدام وظائفها لنقل DataFrame. ومع ذلك ، فإن أفضل طريقة للاستخدام تعتمد على الموقف المحدد وبنية البيانات التي تعمل بها.