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
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:
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,
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,
Pourquoi les valeurs d’une variable changent
Un bout de code est préférable à une capture d'écran.
Cordialement,
Pourquoi les valeurs d’une variable changent
Bonjour,
Pouvez-vous indiquer la commande pour construire votre variable transfert.etranger initiale ?
Merci,
Pourquoi les valeurs d’une variable changent
Citation:
Envoyé par
oussamaz2010
lorsqu'on ajoute cette nouvelle variable à la base "df" initiale se sont ces valeurs "fausses valeurs" qui s'enregistrent
Code:
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:
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:
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,
Pourquoi les valeurs d’une variable changent
Citation:
Envoyé par
oussamaz2010
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:
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,
Pourquoi les valeurs d’une variable changent
Citation:
Envoyé par
oussamaz2010
Je pense qu’il y a un malentendu.
Femmes est une data frame avec plus de 90 variables.
J'ai bien compris.
Citation:
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:
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,