A: verhindern sie, dass ifelse() das datum in eine zahl umwandelt
Die ifelse() -Funktion in Basis-R konvertiert standardmäßig Datumsobjekte in numerische Objekte.
Um dies zu verhindern, können Sie alternativ eine der folgenden Methoden nutzen:
Methode 1: Verwenden Sie as.character() in Base R
df$date <- as. Date (ifelse(df$date < ' 2022-01-20 ', as. character (df$date+5), as. character (df$date)))
Methode 2: Verwenden Sie if_else() in dplyr
df$date <- if_else(df$date < ' 2022-01-20 ', df$date+5, df$date)
Methode 3: Verwenden Sie fifelse() in data.table
df$date <- fifelse(df$date < ' 2022-01-20 ', df$date+5, df$date)
Die folgenden Beispiele zeigen, wie jede Methode in der Praxis mit dem folgenden Datenrahmen in R verwendet wird:
#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
Beispiel 1: Verwenden Sie as.character() in Base R
Der folgende Code zeigt, wie die Funktion as.character() mit der R-Basisfunktion ifelse() verwendet wird, um eine if else-Anweisung für die Datumsspalte des Datenrahmens auszuführen und als Ergebnis ein Datum zu erzeugen:
#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
Wenn ein Wert in der Datumsspalte vor dem 20.01.2022 lag, haben wir dem Datum fünf Tage hinzugefügt.
Beachten Sie, dass die Datumsspalte ihr Datumsformat beibehalten hat, anstatt in ein Zahlenformat konvertiert zu werden.
Beispiel 2: Verwenden Sie if_else() in dplyr
Der folgende Code zeigt, wie Sie mit der if_else() -Funktion von dplyr eine if else-Anweisung für die Datumsspalte im Datenrahmen ausführen und als Ergebnis ein Datum erzeugen:
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
Wenn ein Wert in der Datumsspalte vor dem 20.01.2022 lag, haben wir dem Datum fünf Tage hinzugefügt.
Beachten Sie, dass die Datumsspalte ihr Datumsformat beibehalten hat, anstatt in ein Zahlenformat konvertiert zu werden.
Beispiel 3: Verwenden Sie fifelse() in data.table
Der folgende Code zeigt, wie Sie mit der fifelse() -Funktion von data.table eine if else-Anweisung für die Datumsspalte im Datenrahmen ausführen und als Ergebnis ein Datum erzeugen:
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
Wenn ein Wert in der Datumsspalte vor dem 20.01.2022 lag, haben wir dem Datum fünf Tage hinzugefügt.
Auch hier behielt die Datumsspalte ihr Datumsformat bei, anstatt in ein Zahlenformat konvertiert zu werden.
Hinweis : Bei extrem großen Datenrahmen sind die Methoden dplyr und data.table schneller als die Basis-R-Methode.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in R ausführen:
So schreiben Sie eine verschachtelte If Else-Anweisung in R
Wie schreibe ich eine Fallerklärung in R?
So fügen Sie dem Datenrahmen in R mehrere Spalten hinzu