В: заборонити 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *