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 :

Pourquoi les valeurs d’une variable changent


Sujet :

R

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut Pourquoi les valeurs d’une variable changent
    Bonjour la communauté,
    Lors de la préparation de mes données je recorde une de mes variables en variables binaire «*var_dic*». Pour effectuer une reg logistique, je suis obligé de la transformer en facteur var_dic_fac.
    lorsque j’affiche var-dic j’ai des valeurs 0-1. Aussi lorsque j’affiche la variable var_dic_fac je reçois que les valeurs 0-1.
    Le problème est lorsque je veux afficher var_dic_fac avec n’importe quelle variable, la valeur de var_dic_fac prennent les valeurs 1-2.
    Aussi lorsque je la transforme vers un format numérique «*as.nuleric*» les valeurs change.
    Par avance merci pour votre aide
    Oussamaz

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Conversion d’une variable de type factor en numérique
    Bonjour,

    Il faut passer par le type caractères pour convertir une variable de type factor en numérique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    > df <- data.frame(V1=c("0","1"))
    > str(df)
    'data.frame':   2 obs. of  1 variable:
     $ V1: Factor w/ 2 levels "0","1": 1 2
    > df$V2 <- as.numeric(df$V1)
    > df$V3 <- as.numeric(as.character(df$V1))
    > df
      V1 V2 V3
    1  0  1  0
    2  1  2  1
    Cordialement,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    Je vous remercie pour cette réponse. J’en prends note de cette démarche.
    Svp mgdondon, avez vous une solution pour la première partie de ma question:
    Pour quelle raison lorsque j’affiche var_dic_fac avec n’importe quelle valeur, les valeurs de var__dic_fac change de 0 à 1 vers 1 et 2.
    Merci beaucoup pour votre aide
    Cordialement

  4. #4
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Pourquoi les valeurs d’une variable changent
    Bonjour,

    C'est que c'est le niveau et non la valeur qui s'affiche mais il faudrait voir votre programme pour savoir pourquoi.

    Essayez de créer un exemple simple montrant le problème.

    Cordialement,

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Encore merci à vous.
    Puis-je envoyer une capture écran ?
    Sinon, comment faire pour n’avoir que les valeurs et non les classements.
    Cordialement

  6. #6
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Pourquoi les valeurs d’une variable changent
    Un bout de code est préférable à une capture d'écran.

    Cordialement,

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Ok
    Je reviendrai vers vous demain

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    Voila un exemple:
    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
    transfert.etranger
    "n'ayant pas reçu des transferts en espece"
    "ayant reçu des transferts en espece"
    .
    .
    .
    class (transfert.etranger) 
    "factor"
     
    typeof(transfert.etranger)
    "integer"
     
    transfert.etranger_dic <-  ifelse(transfert.etranger=="ayant reçu des transferts en espece" = 1, 0
    transfert.etranger_dic
    0
    1
    .
    .
    .
    class(transfert.etranger_dic) 
    "integer"
     
    typeof(transfert.etranger_dic)
    "double"
     
    cbind( transfert.etranger, transfert.etranger_dic) # ici pas de changement
    1    1
    2    0
    .
    .
    .
     
    transfert.etranger_dic <- factor (transfert.etranger_dic)
    cbind( transfert.etranger, transfert.etranger_dic)
    1    1
    2    2
    .
    .
    .
    c'est a ce niveau que la variable créée change de valeurs
    j'ai choisi cette illustration facile.
    cordialement

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    rebonjour,
    lorsqu'on ajoute cette nouvelle variable à la base"df" initiale se sont ces valeurs"fausses valeurs " qui s'enregistrent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    df <- data.frame (df, transfert.etranger_dic)
     
    str (df)
    transfert.etranger_dic  : Factor w/2 levels "0", "1" : 1 2 1 1. . . .
    par avance merci
    oussama

  10. #10
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Pourquoi les valeurs d’une variable changent
    Bonjour,

    Pouvez-vous indiquer la commande pour construire votre variable transfert.etranger initiale ?

    Merci,

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Rebonjour,
    merci pour votre soutien
    ce sont les résultats d'une enquête ménage auprés d'une population donnée que je charge d'un ficheir sav en utilisant la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    femmes <- spss.get("ficheir.sav", use.value.labels=TRUE)
    cdlt

  12. #12
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Pourquoi les valeurs d’une variable changent
    Citation Envoyé par oussamaz2010 Voir le message
    lorsqu'on ajoute cette nouvelle variable à la base "df" initiale se sont ces valeurs "fausses valeurs" qui s'enregistrent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    df <- data.frame (df, transfert.etranger_dic)
     
    str(df)
    transfert.etranger_dic  : Factor w/2 levels "0", "1" : 1 2 1 1. . . .
    Je ne vois rien d'anormal ici. La fonction str() produit cet affichage pour les variables de type factor mais vous verrez bien les valeurs en affichant la variable ou le dataframe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > transfert.etranger_dic <- as.factor(c("0","1"))
    > str(transfert.etranger_dic)
     Factor w/ 2 levels "0","1": 1 2
    > transfert.etranger_dic
    [1] 0 1
    Levels: 0 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    > df <- data.frame(V1=c("0","1"))
    > df1 <- data.frame (df, transfert.etranger_dic)
    > str(df1)
    'data.frame':	2 obs. of  2 variables:
     $ V1                    : Factor w/ 2 levels "0","1": 1 2
     $ transfert.etranger_dic: Factor w/ 2 levels "0","1": 1 2
    > df1
      V1 transfert.etranger_dic
    1  0                      0
    2  1                      1
    Cordialement,

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Rebonjour,
    Je vous remercie.
    L’anomalie est à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    transfert.etranger_dic <- factor (transfert.etranger_dic)
    cbind( transfert.etranger, transfert.etranger_dic)
    1 1
    2 2

    Au lieu de 1 0, la variable prend les valeurs 1 2.
    Ce que est clair aussi avec la fct std()

    transfert.etranger_dic : Factor w/2 levels "0", "1" : 1 2 1 1. . . .
    Il est clair que la variable prend les valeurs 1 et 2
    Cordialement

  14. #14
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Pourquoi les valeurs d’une variable changent
    Citation Envoyé par oussamaz2010 Voir le message
    transfert.etranger_dic : Factor w/2 levels "0", "1" : 1 2 1 1. . . .
    Il est clair que la variable prend les valeurs 1 et 2
    Non, ceci signifie que la variable a deux niveaux 1 et 2 dont les valeurs sont "0" et "1".

    Difficile de reproduire votre programme puisque vous ne donnez pas le point de départ mais voici une proposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    > femmes <- data.frame(transfert.etranger = as.factor(c("n'ayant pas reçu des transferts en espece",
    +                                                       "ayant reçu des transferts en espece")))
    > femmes$transfert.etranger_dic <- ifelse(femmes$transfert.etranger=="ayant reçu des transferts en espece",1,0)
    > femmes$transfert.etranger_dic_factor <- as.factor(femmes$transfert.etranger_dic)
    > str(femmes)
    'data.frame':	2 obs. of  3 variables:
     $ transfert.etranger           : Factor w/ 2 levels "ayant reçu des transferts en espece",..: 2 1
     $ transfert.etranger_dic       : num  0 1
     $ transfert.etranger_dic_factor: Factor w/ 2 levels "0","1": 1 2
    > femmes
                             transfert.etranger transfert.etranger_dic transfert.etranger_dic_factor
    1 n'ayant pas reçu des transferts en espece                      0                             0
    2       ayant reçu des transferts en espece                      1                             1
    Je pense que votre problème vient du fait que les niveaux sont définis par défaut par ordre alphabétique et que l'ordre alphabétique n'est pas le même entre la variable au format texte et la variable recodée. Vous pourriez utiliser la fonction relevel() pour réordonner les niveaux mais la proposition ci-dessus me semble plus simple.

    Cordialement,

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Merci bcp.
    Je pense qu’il y a un malentendu.
    Femmes est une data frame avec plus de 90 variables. Comme j’explique dans mon premier message, je veux réaliser des régressions logistiques du coup, je dois créer des variables binomial.
    Parmi elle transfert.etranger_dic.
    Mon pb est lorsque je transforme cette nouvelle variable en facteur, les valeurs qu’elle prend changent
    Str (femmes)
    Transfert.etranger_dic factor w 2 0 1: 1 1 2 1 2
    Ici à partir des : il est clair que les valeurs que prennent cette variable sont 1 et 2 au lieu de 0 et 1.
    NB: je ne peux pas copier plus d’éléments du code et des résultats car je fais tourner mon code sur un autre PC non connecté à Internet.

    Cdlt

    Je pense que les niveaux qui sont affichés et non les valeurs cordialement

  16. #16
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Pourquoi les valeurs d’une variable changent
    Citation Envoyé par oussamaz2010 Voir le message
    Je pense qu’il y a un malentendu.
    Femmes est une data frame avec plus de 90 variables.
    J'ai bien compris.

    Mon pb est lorsque je transforme cette nouvelle variable en facteur, les valeurs qu’elle prend changent
    Str (femmes)
    Transfert.etranger_dic factor w 2 0 1: 1 1 2 1 2
    Ici à partir des : il est clair que les valeurs que prennent cette variable sont 1 et 2 au lieu de 0 et 1.
    Non, ceci signifie que la variable a deux niveaux 1 et 2 dont les valeurs sont "0" et "1".

    Exécutez par exemple head(femmes$Transfert.etranger_dic) pour vous en convaincre ou regardez à nouveau mon exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > str(femmes)
    'data.frame':	2 obs. of  3 variables:
     $ transfert.etranger           : Factor w/ 2 levels "ayant reçu des transferts en espece",..: 2 1
     $ transfert.etranger_dic       : num  0 1
     $ transfert.etranger_dic_factor: Factor w/ 2 levels "0","1": 1 2
    > femmes
                             transfert.etranger transfert.etranger_dic transfert.etranger_dic_factor
    1 n'ayant pas reçu des transferts en espece                      0                             0
    2       ayant reçu des transferts en espece                      1                             1
    La variable transfert.etranger a les niveau 1 et 2 mais la valeur est bien du texte.

    Cordialement,

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    je l'espere bien.
    je vais essayer demain puis je reviendrai vers vous.
    merci beaucoup

  18. #18
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Les valeurs 1 et 2 sont les représentations internes de la variable facteur (cf. la fonction mode). En interne, ils sont en effet représentés par des nombres mais cela n'a aucune incidence sur les analyses tant qu'on n'essaie pas de les transformer directement en numérique, transformation généralement sans intérêt pour l'analyse. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    df <- data.frame(V1=sample( letters[1:3]), stringsAsFactors=TRUE)
    str( df)
    as.numeric( df$V1)

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    merci beaucoup
    c'est ce que j'ai compris de mgdondon
    par ailleurs, les valeurs changent lorsque je mute de factir vers numeric
    cdlt
    ouss

    Merci les amis pour votre aide

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

Discussions similaires

  1. [Avatar] Pourquoi les membres du club changent d'avatar sur le forum ?
    Par Maxoo dans le forum La taverne du Club : Humour et divers
    Réponses: 105
    Dernier message: 06/07/2007, 11h52
  2. Réponses: 7
    Dernier message: 22/02/2007, 06h02
  3. [VBS]Soustraire les éléments d’une variable
    Par Edoxituz dans le forum VBScript
    Réponses: 15
    Dernier message: 21/02/2006, 18h46
  4. Passer la valeur dune variable javascript à une variable xsl
    Par nramariavelo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/12/2005, 17h27
  5. récupérer la valeur d’une variable de type radio
    Par amelhog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/08/2005, 09h43

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