كيفية إعادة تشكيل البيانات بين التنسيقات العريضة والطويلة في r
يمكن عرض إطار البيانات في R بتنسيق واسع أو طويل .
اعتمادًا على غرضك، قد ترغب في أن يكون إطار البيانات بأحد هذه التنسيقات المحددة.
أسهل طريقة لإعادة تشكيل البيانات بين هذه التنسيقات هي استخدام الوظيفتين التاليتين من حزمة Tidyr في R:
- Pivot_longer() : يعيد تشكيل كتلة البيانات من التنسيق الواسع إلى التنسيق الطويل.
- Pivot_wider() : يعيد تشكيل كتلة البيانات من التنسيق الطويل إلى التنسيق الواسع.
توضح الأمثلة التالية كيفية استخدام كل وظيفة عمليًا.
المثال 1: إعادة تشكيل البيانات من واسعة إلى طويلة
لنفترض أن لدينا إطار البيانات التالي في R والذي هو حاليًا بتنسيق واسع:
#create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D'),
year1=c(12, 15, 19, 19),
year2=c(22, 29, 18, 12))
#view data frame
df
player year1 year2
1 to 12 22
2 B 15 29
3 C 19 18
4 D 19 12
يمكننا استخدام الدالة Pivot_longer() لتدوير إطار البيانات هذا إلى تنسيق طويل:
library (tidyr)
#pivot the data frame into a long format
df %>% pivot_longer(cols=c(' year1 ', ' year2 '),
names_to=' year ',
values_to=' points ')
# A tibble: 8 x 3
player year points
1 A year1 12
2 A year2 22
3 B year1 15
4 B year2 29
5 C year1 19
6 C year2 18
7 D year1 19
8 D year2 12
لاحظ أن أسماء الأعمدة year1 و year2 تُستخدم الآن كقيم في عمود جديد يسمى “السنة” ويتم وضع القيم من تلك الأعمدة الأصلية في عمود جديد يسمى “النقاط”.
والنتيجة النهائية هي إطار بيانات طويل.
ملاحظة : يمكنك العثور على الوثائق الكاملة للدالة Pivot_longer() هنا .
المثال 2: إعادة تشكيل البيانات من الطول إلى العرض
لنفترض أن لدينا إطار البيانات التالي في R والذي هو حاليًا بتنسيق طويل:
#create data frame
df <- data. frame (player=rep(c('A', 'B'), each= 4 ),
year=rep(c(1, 1, 2, 2), times= 2 ),
stat=rep(c('points', 'assists'), times= 4 ),
amount=c(14, 6, 18, 7, 22, 9, 38, 4))
#view data frame
df
player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 2 points 18
4 A 2 assists 7
5 B 1 points 22
6 B 1 assists 9
7 B 2 points 38
8 B 2 assists 4
يمكننا استخدام الدالة Pivot_wider() لتدوير إطار البيانات هذا إلى تنسيق واسع:
library (tidyr)
#pivot the data frame into a wide format
df %>% pivot_wider(names_from = stat, values_from = amount)
# A tibble: 4 x 4
player year points assists
1 A 1 14 6
2 A 2 18 7
3 B 1 22 9
4 B 2 38 4
لاحظ أن القيم الموجودة في عمود الإحصائيات تُستخدم الآن كأسماء أعمدة ويتم استخدام القيم الموجودة في عمود المبلغ كقيم خلايا في هذه الأعمدة الجديدة.
والنتيجة النهائية هي كتلة كبيرة من البيانات.
ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة Pivot_wider() هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:
كيفية حساب القيم الفريدة حسب المجموعة في R
كيفية حساب القيم غير NA في R
كيفية إنشاء الجداول التكرارية النسبية في R