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 :

problème ifelse si condition fausse


Sujet :

R

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut problème ifelse si condition fausse
    Bonjour,

    J'ai une question,
    En fait dans mon ifelse si la condition est fausse je souhaite que rien ne se passe , je veux garder la valeur de départ mais R ne veut pas

    mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab2rm$CatU=ifelse(tab2rm$LVeh==tab2rm$Lveh1,as.character(tab2rm$CatU1),as.character(tab2rm$CatU))
    Je souhaite garder la valeur de tab2rm$CatU dans tab2rm$CatU si la condition est fausse,

    R si la condition est fausse me met NA à la place.

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    MCU
    Inscrit en
    Juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MCU
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 185
    Points : 486
    Points
    486
    Par défaut
    Bonjour,

    Dans ce cas, ne pas utiliser ifelse?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab2rm$CatU[which(tab2rm$LVeh==tab2rm$Lveh1)] <- as.character(tab2rm$CatU1)
    HTH

    Vincent

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse mais j'ai trouvé une alternative pour résoudre mon problème avec des sous-table.
    Là j'ai un autre problème quand je veux fusionner mes tables par ligne tout à la fin de mon code j'ai ce message d'erreur que signifie-t-il ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    ## Importation des données 
    ## chemin d'accès et nom du fichier source
     
    dba <- "C:/Documents and Settings/Administrateur/Bureau/base donnée maxi-scooter/acc_2rm_idf_2008_CLV.xls"
    dbb <- "C:/Documents and Settings/Administrateur/Bureau/base donnée maxi-scooter/acc_2rm_idf_2008_UR.xls"
    dbc <- "C:/Documents and Settings/Administrateur/Bureau/base donnée maxi-scooter/acc_2rm_idf_2009_CLV.xls"
    dbd <- "C:/Documents and Settings/Administrateur/Bureau/base donnée maxi-scooter/acc_2rm_idf_2009_UR.xls"
    dbe <- "C:/Documents and Settings/Administrateur/Bureau/base donnée maxi-scooter/acc_2rm_idf_2010_CLV.xls"
    dbf <- "C:/Documents and Settings/Administrateur/Bureau/base donnée maxi-scooter/acc_2rm_idf_2010_UR.xls"
     
    ## ouverture d'une connexion ODBC vers db
     
    channela <- odbcConnectExcel(xls.file = dba)
    channelb <- odbcConnectExcel(xls.file = dbb)
    channelc <- odbcConnectExcel(xls.file = dbc)
    channeld <- odbcConnectExcel(xls.file = dbd)
    channele <- odbcConnectExcel(xls.file = dbe)
    channelf <- odbcConnectExcel(xls.file = dbf)
     
    acc2008_clv <- sqlFetch(channel = channela,sqtable = "CONCERTO")
    acc2008_ur  <- sqlFetch(channel = channelb,sqtable = "CONCERTO")
    acc2009_clv <- sqlFetch(channel = channelc,sqtable = "CONCERTO")
    acc2009_ur  <- sqlFetch(channel = channeld,sqtable = "CONCERTO")
    acc2010_clv <- sqlFetch(channel = channele,sqtable = "CONCERTO")
    acc2010_ur  <- sqlFetch(channel = channelf,sqtable = "CONCERTO")
     
    odbcClose(channela)
    odbcClose(channelb)
    odbcClose(channelc)
    odbcClose(channeld)
    odbcClose(channele)
    odbcClose(channelf)
     
    ##Fusion des tables
    # par colonnes 
    acc2008=merge(acc2008_clv,acc2008_ur,by=c("Org/Unité/PV","Date","Heure"),all=F) 
    acc2009=merge(acc2009_clv,acc2009_ur,by=c("Org/Unité/PV","Date","Heure"),all=F) 
    acc2010=merge(acc2010_clv,acc2010_ur,by=c("Org/Unité/PV","Date","Heure"),all=F) 
    # par lignes
    acc08_10=rbind(acc2008,acc2009,acc2010)
    Messages d'avis :
    1: In `[<-.factor`(`*tmp*`, ri, value = c(NA, NA, NA, NA, -170989200, :
    niveau de facteur incorrect, NAs générés
    2: In `[<-.factor`(`*tmp*`, ri, value = c(NA, NA, NA, NA, 77, NA, NA, :
    niveau de facteur incorrect, NAs générés

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'ai résolu mon problème en triant ma table excel avec les variables qu'il ne reconnaissait pas pour l'importation.

    Mais maintenant j'ai un nouveau problème quand je merge mes tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    > nrow(tab_veh)
    [1] 31506
    > nrow(tab_usag)
    [1] 30960
    > tab_uv=merge(tab_veh,tab_usag,by=c("Org/Unité/PV","Date","Heure","LVeh"),all=T)
    > nrow(tab_uv)
    [1] 31525
    > tab_uv_idf=unique(tab_uv)
    > nrow(tab_uv_idf)
    [1] 31521
    > tab_uv=merge(tab_veh,tab_usag,by=c("Org/Unité/PV","Date","Heure","LVeh"),all.x=T)
    > nrow(tab_uv)
    [1] 31525
    > tab_uv_idf=unique(tab_uv)
    > nrow(tab_uv_idf)
    [1] 31521
    Sur ma table tab_uv je souhaite qu'il y ait le même nombre d'observation que tab_veh, en fait je veux toutes les observations de tab_veh et seulement ceux associé de ma table tab_usag, le problème c'est que j'ai 15 lignes en trop . En fait je pense que le problème peut être réglé si je peux utiliser la fonction unique pour ces variables ("Org/Unité/PV","Date","Heure","LVeh") mais je sais pas comment coder ça

    Merci

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'ai résolu mon problème avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab_uv_idf=tab_uv[!duplicated(tab_uv[,c("Org/Unité/PV","Date","Heure","LVeh")]),]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème dans des conditions
    Par Tutotictac dans le forum Langage
    Réponses: 4
    Dernier message: 29/07/2006, 11h27
  2. Réponses: 4
    Dernier message: 28/07/2006, 15h32
  3. problème sur une condition if
    Par boss_gama dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/07/2006, 12h04
  4. Problème avec une condition
    Par ghan77 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2005, 16h18
  5. Garder le focus si condition fausse
    Par Alexandre Sahli dans le forum IHM
    Réponses: 12
    Dernier message: 07/12/2005, 15h53

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