ج: منع ifelse() من تحويل التاريخ إلى رقمي


تقوم الدالة ifelse() في قاعدة R بتحويل كائنات التاريخ إلى كائنات رقمية بشكل افتراضي.

ولمنع حدوث ذلك، يمكنك استخدام إحدى الطرق التالية كبديل:

الطريقة الأولى: استخدام as.character() في Base R

 df$date <- as. Date (ifelse(df$date < ' 2022-01-20 ',
                   as. character (df$date+5),
                   as. character (df$date)))

الطريقة الثانية: استخدم if_else() في dplyr

 df$date <- if_else(df$date < ' 2022-01-20 ', df$date+5, df$date)

الطريقة الثالثة: استخدم fifelse() في data.table

 df$date <- fifelse(df$date < ' 2022-01-20 ', df$date+5, df$date)

توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا مع إطار البيانات التالي في R:

 #create data frame
df <- data. frame (date=as. Date (c('2022-01-05', '2022-01-17', '2022-01-22',
                        '2022-01-23', '2022-01-29', '2022-02-13')),
                 sales=c(22, 35, 24, 20, 16, 19))

#view data frame
df

        dirty date
1 2022-01-05 22
2 2022-01-17 35
3 2022-01-22 24
4 2022-01-23 20
5 2022-01-29 16
6 2022-02-13 19

مثال 1: استخدم as.character() في Base R

يوضح التعليمة البرمجية التالية كيفية استخدام الدالة as.character() مع الدالة R base ifelse() لتنفيذ عبارة if else في عمود التاريخ بإطار البيانات وإنتاج تاريخ نتيجة لذلك:

 #if date is before 2022-01-20 then add 5 days
df$date <- as. Date (ifelse(df$date < ' 2022-01-20 ',
                   as. character (df$date+5),
                   as. character (df$date)))

#view updated data frame
df

        dirty dates
1 2022-01-10 22
2 2022-01-22 35
3 2022-01-22 24
4 2022-01-23 20
5 2022-01-29 16
6 2022-02-13 19

إذا كانت القيمة في عمود التاريخ قبل 20/01/2022، أضفنا خمسة أيام إلى التاريخ.

لاحظ أن عمود التاريخ احتفظ بتنسيق التاريخ الخاص به بدلاً من تحويله إلى تنسيق أرقام.

المثال 2: استخدم if_else() في dplyr

يوضح التعليمة البرمجية التالية كيفية استخدام وظيفة if_else() الخاصة بـ dplyr لتنفيذ عبارة if else في عمود التاريخ في إطار البيانات وإنتاج تاريخ نتيجة لذلك:

 library (dplyr)

#if date is before 2022-01-20 then add 5 days
df$date <- if_else(df$date < ' 2022-01-20 ', df$date+5, df$date)

#view updated data frame
df

        dirty date
1 2022-01-10 22
2 2022-01-22 35
3 2022-01-22 24
4 2022-01-23 20
5 2022-01-29 16
6 2022-02-13 19

إذا كانت القيمة في عمود التاريخ قبل 20/01/2022، أضفنا خمسة أيام إلى التاريخ.

لاحظ أن عمود التاريخ احتفظ بتنسيق التاريخ الخاص به بدلاً من تحويله إلى تنسيق أرقام.

مثال 3: استخدم fifelse() في data.table

يوضح التعليمة البرمجية التالية كيفية استخدام الدالة fifelse() الخاصة بـ data.table لتنفيذ عبارة if else في عمود التاريخ في إطار البيانات وإنتاج تاريخ نتيجة لذلك:

 library (data.table)

#if date is before 2022-01-20 then add 5 days
df$date <- fifelse(df$date < ' 2022-01-20 ', df$date+5, df$date)

#view updated data frame
df

        dirty dates
1 2022-01-10 22
2 2022-01-22 35
3 2022-01-22 24
4 2022-01-23 20
5 2022-01-29 16
6 2022-02-13 19

إذا كانت القيمة في عمود التاريخ قبل 20/01/2022، أضفنا خمسة أيام إلى التاريخ.

مرة أخرى، احتفظ عمود التاريخ بتنسيق التاريخ الخاص به بدلاً من تحويله إلى تنسيق أرقام.

ملحوظة : بالنسبة لإطارات البيانات الكبيرة جدًا، ستكون طريقتا dplyr وdata.table أسرع من طريقة R الأساسية.

مصادر إضافية

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

كيفية كتابة عبارة If Else المتداخلة في R
كيفية كتابة بيان الحالة في R
كيفية إضافة أعمدة متعددة إلى إطار البيانات في R

Add a Comment

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