A: mencegah ifelse() mengubah tanggal menjadi numerik
Fungsi ifelse() di basis R mengonversi objek tanggal menjadi objek numerik secara default.
Untuk mencegah hal ini terjadi, Anda dapat menggunakan salah satu cara berikut sebagai alternatifnya:
Metode 1: Gunakan as.character() di Basis R
df$date <- as. Date (ifelse(df$date < ' 2022-01-20 ', as. character (df$date+5), as. character (df$date)))
Metode 2: Gunakan if_else() di dplyr
df$date <- if_else(df$date < ' 2022-01-20 ', df$date+5, df$date)
Metode 3: Gunakan fifelse() di data.tabel
df$date <- fifelse(df$date < ' 2022-01-20 ', df$date+5, df$date)
Contoh berikut menunjukkan cara menggunakan setiap metode dalam praktik dengan kerangka data berikut di 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
Contoh 1: Gunakan as.character() di Basis R
Kode berikut menunjukkan cara menggunakan fungsi as.character() dengan fungsi basis R ifelse() untuk menjalankan pernyataan if else pada kolom tanggal bingkai data dan menghasilkan tanggal sebagai hasilnya:
#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
Jika nilai di kolom tanggal sebelum 20/01/2022, kami menambahkan lima hari ke tanggal tersebut.
Perhatikan bahwa kolom tanggal tetap mempertahankan format tanggalnya dan bukan diubah menjadi format angka.
Contoh 2: Gunakan if_else() di dplyr
Kode berikut menunjukkan cara menggunakan fungsi if_else() dplyr untuk menjalankan pernyataan if else pada kolom tanggal dalam bingkai data dan menghasilkan tanggal sebagai hasilnya:
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
Jika nilai di kolom tanggal sebelum 20/01/2022, kami menambahkan lima hari ke tanggal tersebut.
Perhatikan bahwa kolom tanggal tetap mempertahankan format tanggalnya dan bukan diubah menjadi format angka.
Contoh 3: Gunakan fifelse() di data.tabel
Kode berikut menunjukkan cara menggunakan fungsi fifelse() dari data.table untuk menjalankan pernyataan if else pada kolom tanggal dalam bingkai data dan menghasilkan tanggal sebagai hasilnya:
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
Jika nilai di kolom tanggal sebelum 20/01/2022, kami menambahkan lima hari ke tanggal tersebut.
Sekali lagi, kolom tanggal mempertahankan format tanggalnya alih-alih diubah menjadi format angka.
Catatan : Untuk frame data yang sangat besar, metode dplyr dan data.table akan lebih cepat daripada metode dasar R.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di R:
Cara menulis pernyataan If Else bersarang di R
Cara menulis pernyataan kasus di R
Bagaimana cara menambahkan beberapa kolom ke bingkai data di R