في هذا السياق، يتعامل المستخدم مع إطار بيانات يُظهر شهورًا ومعرّفات (ID) ، ويرغب في تصفية البيانات بحيث يتم الاحتفاظ فقط بالمعرّفات التي تظهر في الشهر الأول. يُظهر الشيفرة أدناه كيف يمكن تحقيق هذا:
R# تحميل مكتبة tidyverse
library(tidyverse)
# تحديد الإطار البياني
df <- data.frame(month_key = c(rep(201504, 2), rep(201505, 3)),
id = c(1, 2, 1, 2, 3))
# تصفية البيانات باستخدام tidyverse
filtered_df <- df %>%
group_by(month_key) %>% # تجميع البيانات حسب month_key
filter(row_number() == 1) %>% # اختيار الصفوف الأولى لكل month_key
ungroup() %>% # فك الإجماع
filter(id %in% filtered_df$id) # تصفية البيانات الأصلية بحسب المعرّفات الناتجة
# طباعة الإطار البياني النهائي
print(filtered_df)
تم استخدام مكتبة tidyverse للقيام بذلك، حيث تساعد على تنظيم الشيفرة وجعلها أكثر وضوحًا. يتم تجميع البيانات أولاً حسب month_key
، ثم يتم اختيار الصفوف الأولى لكل month_key
. بعد ذلك، يتم فك الإجماع للسماح بتصفية البيانات الأصلية باستخدام المعرّفات الناتجة.
المزيد من المعلومات
في هذا السياق، يتعامل المستخدم مع لغة البرمجة R ومكتبة tidyverse، ويقوم بتصفية إطار البيانات (data frame) باستخدام مجموعة من الخطوات. للبداية، يتم تحميل مكتبة tidyverse باستخدام الأمر library(tidyverse)
، والتي تشمل مجموعة من الحزم المفيدة لتحليل البيانات.
ثم يتم تعريف إطار البيانات df
الذي يحتوي على عمودين، month_key
و id
، ويحتوي على بيانات تمثل شهورًا ومعرفات. بعد ذلك، يتم استخدام مجموعة من وظائف tidyverse لتحقيق عملية التصفية المطلوبة.
يتم تجميع البيانات باستخدام group_by(month_key)
، حيث يتم تجميع الصفوف حسب الشهر، ومن ثم يتم استخدام filter(row_number() == 1)
لاختيار الصفوف الأولى لكل شهر. يلي ذلك استخدام ungroup()
لفك التجميع والعودة إلى الإطار البياني الأصلي.
أخيرًا، يتم استخدام filter(id %in% filtered_df$id)
لتصفية البيانات الأصلية بحسب المعرّفات التي ظهرت في الشهر الأول. النتيجة النهائية هي إطار بيانات يحتوي فقط على المعرفات التي ظهرت في الشهر الأول، ويتم طباعته باستخدام print(filtered_df)
.
هذا النهج يتيح للمستخدم تحقيق هدفه بشكل فعّال دون الحاجة إلى استخدام عمليات الانضمام (inner join) أو تحديد المعرّفات يدويًا، مما يجعل الشيفرة أكثر فعالية وسهولة قراءة.