C: ifelse() işlevinin tarihi sayısal değere dönüştürmesini önleyin


R tabanındaki ifelse() işlevi, tarih nesnelerini varsayılan olarak sayısal nesnelere dönüştürür.

Bunun olmasını önlemek için alternatif olarak aşağıdaki yöntemlerden birini kullanabilirsiniz:

Yöntem 1: Base R’de as.character() işlevini kullanın

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

Yöntem 2: dplyr’de if_else() işlevini kullanın

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

Yöntem 3: data.table’da fifelse() işlevini kullanın

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

Aşağıdaki örnekler, R’deki aşağıdaki veri çerçevesiyle her yöntemin pratikte nasıl kullanılacağını gösterir:

 #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

Örnek 1: R Tabanında as.character() işlevini kullanın

Aşağıdaki kod, veri çerçevesinin tarih sütununda bir if else ifadesi gerçekleştirmek ve sonuç olarak bir tarih üretmek için as.character() işlevinin R base ifelse() işleviyle nasıl kullanılacağını gösterir:

 #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

Tarih sütunundaki bir değer 20.01.2022 tarihinden önceyse tarihe beş gün ekledik.

Tarih sütununun sayı biçimine dönüştürülmek yerine tarih biçimini koruduğunu unutmayın.

Örnek 2: dplyr’de if_else() işlevini kullanın

Aşağıdaki kod, veri çerçevesindeki tarih sütununda bir if else ifadesini gerçekleştirmek ve sonuç olarak bir tarih üretmek için dplyr’in if_else() işlevinin nasıl kullanılacağını gösterir:

 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

Tarih sütunundaki bir değer 20.01.2022 tarihinden önceyse tarihe beş gün ekledik.

Tarih sütununun sayı biçimine dönüştürülmek yerine tarih biçimini koruduğunu unutmayın.

Örnek 3: data.table’da fifelse() işlevini kullanın

Aşağıdaki kod, veri çerçevesindeki tarih sütununda bir if else ifadesini gerçekleştirmek ve sonuç olarak bir tarih üretmek için data.table’ın fifelse() işlevinin nasıl kullanılacağını gösterir:

 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

Tarih sütunundaki bir değer 20.01.2022 tarihinden önceyse tarihe beş gün ekledik.

Tarih sütunu yine sayı biçimine dönüştürülmek yerine tarih biçimini korudu.

Not : Çok büyük veri çerçeveleri için dplyr ve data.table yöntemleri temel R yönteminden daha hızlı olacaktır.

Ek kaynaklar

Aşağıdaki eğitimlerde R’de diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

R’de yuvalanmış If Else ifadesi nasıl yazılır?
R’de bir vaka ifadesi nasıl yazılır
R’de veri çerçevesine birden fazla sütun nasıl eklenir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir