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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *