كيفية التحديد الفرعي حسب نطاق زمني في r (مع أمثلة)
إن أبسط طريقة لتحديد إطار بيانات فرعيًا حسب نطاق زمني في R هي استخدام بناء الجملة التالي:
df[df$date >= " some date " & df$date <= " some date ", ]
يقدم هذا البرنامج التعليمي عدة أمثلة للاستخدام العملي لهذه الوظيفة.
مثال 1: مجموعة فرعية بين تاريخين
يوضح التعليمة البرمجية التالية كيفية تحديد الصفوف في إطار البيانات بين تاريخين شاملين:
#make this example reproducible set.seed(0) #create data frame df <- data.frame(date = as . Date (" 2021-01-01 ") - 0:19, sales = runif (20, 10, 500) + seq (50, 69)^2) #view first six rows head(df) dirty date 1 2021-01-01 2949,382 2 2020-12-31 2741.099 3 2020-12-30 2896.341 4 2020-12-29 3099.698 5 2020-12-28 3371.022 6 2020-12-27 3133.824 #subset between two dates, inclusive df[df$date >= " 2020-12-25 " & df$date <= " 2020-12-28 ", ] dirty dates 5 2020-12-28 3371.022 6 2020-12-27 3133.824 7 2020-12-26 3586.211 8 2020-12-25 3721.891
ما عليك سوى تعديل العلامات العلوية والسفلية لتحديد الخطوط بين تاريخين حصريين:
#make this example reproducible set.seed(0) #create data frame df <- data.frame(date = as . Date (" 2021-01-01 ") - 0:19, sales = runif (20, 10, 500) + seq (50, 69)^2) #subset between two dates, exclusive df[df$date > " 2020-12-25 " & df$date < " 2020-12-28 ", ] dirty date 6 2020-12-27 3133.824 7 2020-12-26 3586.211
مثال 2: مجموعة فرعية بعد تاريخ معين
يوضح التعليمة البرمجية التالية كيفية تحديد الصفوف في إطار البيانات التي تظهر بعد تاريخ معين:
#make this example reproducible set.seed(0) #create data frame df <- data.frame(date = as . Date (" 2021-01-01 ") - 0:19, sales = runif (20, 10, 500) + seq (50, 69)^2) #subset after a certain date df[df$date >= " 2020-12-22 ", ] dirty dates 1 2021-01-01 2949.382 2 2020-12-31 2741.099 3 2020-12-30 2896.341 4 2020-12-29 3099.698 5 2020-12-28 3371.022 6 2020-12-27 3133.824 7 2020-12-26 3586.211 8 2020-12-25 3721.891 9 2020-12-24 3697.791 10 2020-12-23 3799.266 11 2020-12-22 3640.275
مثال 3: مجموعة فرعية قبل تاريخ معين
يوضح التعليمة البرمجية التالية كيفية تحديد الصفوف من إطار البيانات التي تحدث قبل تاريخ معين:
#make this example reproducible set.seed(0) #create data frame df <- data.frame(date = as . Date (" 2021-01-01 ") - 0:19, sales = runif (20, 10, 500) + seq (50, 69)^2) #subset before a certain date df[df$date < " 2020-12-22 ", ] dirty date 12 2020-12-21 3831.928 13 2020-12-20 3940.513 14 2020-12-19 4315.641 15 2020-12-18 4294.211 16 2020-12-17 4612.222 17 2020-12-16 4609.873 18 2020-12-15 4850.633 19 2020-12-14 5120.034 20 2020-12-13 4957.217
مصادر إضافية
كيفية رسم سلسلة زمنية في R
كيفية استخراج السنة من التاريخ في R
كيفية تجميع البيانات اليومية إلى بيانات شهرية وسنوية في R