Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

R : empêcher ifelse() de convertir la date en numérique



La fonction ifelse() en base R convertit les objets date en objets numériques par défaut.

Pour éviter que cela ne se produise, vous pouvez utiliser l’une des méthodes suivantes comme alternative :

Méthode 1 : utiliser as.character() dans Base R

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

Méthode 2 : utilisez if_else() dans dplyr

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

Méthode 3 : utilisez fifelse() dans data.table

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

Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le bloc de données suivant dans 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

        date sales
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

Exemple 1 : utiliser as.character() dans Base R

Le code suivant montre comment utiliser la fonction as.character() avec la fonction ifelse() de la base R pour effectuer une instruction if else sur la colonne date du bloc de données et produire une date en conséquence :

#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

        date sales
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

Si une valeur dans la colonne de date était antérieure au 20/01/2022, nous avons ajouté cinq jours à la date.

Notez que la colonne de date a conservé son format de date au lieu d’être convertie en format numérique.

Exemple 2 : utilisez if_else() dans dplyr

Le code suivant montre comment utiliser la fonction if_else() de dplyr pour effectuer une instruction if else sur la colonne de date dans le bloc de données et produire une date en conséquence :

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

        date sales
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

Si une valeur dans la colonne de date était antérieure au 20/01/2022, nous avons ajouté cinq jours à la date.

Notez que la colonne de date a conservé son format de date au lieu d’être convertie en format numérique.

Exemple 3 : utilisez fifelse() dans data.table

Le code suivant montre comment utiliser la fonction fifelse() de data.table pour effectuer une instruction if else sur la colonne de date dans le bloc de données et produire une date en conséquence :

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

        date sales
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

Si une valeur dans la colonne de date était antérieure au 20/01/2022, nous avons ajouté cinq jours à la date.

Encore une fois, la colonne date a conservé son format de date au lieu d’être convertie en format numérique.

Remarque : Pour les trames de données extrêmement volumineuses, les méthodes dplyr et data.table seront plus rapides que la méthode de base R.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :

Comment écrire une instruction If Else imbriquée dans R
Comment rédiger une déclaration de cas dans R
Comment ajouter plusieurs colonnes au bloc de données dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *