В: заборонити ifelse() перетворювати дату в числову
Функція ifelse() у базовому R перетворює об’єкти дати на числові об’єкти за замовчуванням.
Щоб цього не сталося, ви можете використовувати один із наведених нижче методів як альтернативу:
Спосіб 1: використовуйте as.character() у Base R
df$date <- as. Date (ifelse(df$date < ' 2022-01-20 ', as. character (df$date+5), as. character (df$date)))
Спосіб 2: використовуйте if_else() у dplyr
df$date <- if_else(df$date < ' 2022-01-20 ', df$date+5, df$date)
Спосіб 3. Використовуйте 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