IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Remplacer NA par valeurs calculées


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2018
    Messages : 1
    Par défaut Remplacer NA par valeurs calculées
    Hello,

    Je souhaiterai remplacer les valeurs NA par des valeurs calculées à partir de l'élément précédent, mais sans utilisé de boucle for, en une seule ligne de commande si possible (en utilisant which, index, apply, ... ou autre)

    Voici mon programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    df<-data.frame(D=c("2017-01-01", "2017-04-01", "2017-07-01", "2017-10-01", "2018-01-01", "2018-04-01", "2018-07-01", "2018-10-01", "2019-01-01"),
                   V=c(9.56,9.44,9.64,8.94,9.18,NA,NA,NA,NA))
     
    df$D <- as.Date(df$D)
    cols<-colnames(d)
    ts  <- xts(df[,-1], order.by=as.Date(df[,1],"%m/%d/%Y"))
    colnames(ts)<-c('VALUE')
    VALUE
    2017-01-01 9.56
    2017-04-01 9.44
    2017-07-01 9.64
    2017-10-01 8.94
    2018-01-01 9.18
    2018-04-01 NA
    2018-07-01 NA
    2018-10-01 NA
    2019-01-01 NA

    et je souhaiterai en output l'équivalent de ceci mais sans boucle, et en une seule ligne le plus simple possible (ou pas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i in seq_along(ts)[-1])if(is.na(ts[i])) ts[i] <- ts[i-1]*1.01
    VALUE
    2017-01-01 9.56
    2017-04-01 9.44
    2017-07-01 9.64
    2017-10-01 8.94
    2018-01-01 9.18
    2018-04-01 9.27
    2018-07-01 9.36
    2018-10-01 9.46
    2019-01-01 9.55

    Les NA étant remplacé par [n-1]*1.01

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Par défaut
    Bonjour,

    Essaye ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    for( i in 1:nrow(df)){df$V[i] = ifelse( is.na(df$V[i]) == T , df$V[i-1]*1.01 , df$V[i])}

Discussions similaires

  1. remplacer NA par valeur interpolée
    Par Florence Magnin dans le forum R
    Réponses: 15
    Dernier message: 19/06/2013, 15h19
  2. récupérer le mois par valeur calculée
    Par johan971 dans le forum SharePoint
    Réponses: 2
    Dernier message: 03/06/2008, 16h00
  3. Remplacer par valeur cellule
    Par ber243 dans le forum Excel
    Réponses: 9
    Dernier message: 14/10/2007, 22h00
  4. [Requête/SQL]Remplacer champ par valeur autre champ
    Par BORDEAUX4 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/04/2007, 11h05
  5. remplacement d'une valeur par une autre
    Par hugoos dans le forum Langage
    Réponses: 9
    Dernier message: 20/09/2005, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo