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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert