transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

andre lederf
Messages : 2
Enregistré le : 08 Fév 2017, 17:11

transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Messagepar andre lederf » 01 Mar 2017, 10:33

Bonjour
je viens d'importer un fichier de données sous R studio
Q1: alors que dans le tableau les cellules avec les prix sont bien définies comme nombre, j'obtiens des factor?
$ Company : Factor w/ 4 levels "BV","GM","SAS",..: 4 2 3 4 2 4 3 3 3 1 ...
$ price : Factor w/ 112 levels "100 000","102 349",..: 18 112 71 67 4 3 7 105 53 54 ...

j'ai essayer comme recommander ds le forum:
> PO$price <- as.numeric(levels(PO$price))[PO$price]
Warning message:
NAs introduced by coercion
et j 'ai des NA a la place de mes chiffres !

j'ai alors essayé
> PO$price <- as.numeric(as.character(PO$price))
Warning message:
NAs introduced by coercion
même résultat!

est ce quelqu'un pourrais me donner la solution?
je vous remercie
cordialement

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Messagepar Pierre-Yves Berrard » 01 Mar 2017, 10:41

Bonjour,

À première vue, la présence de séparateurs de milliers ("102 349") pourrait causer le problème.
Quel est le format des données à importer (csv...) ?
PY

Paul Valentine
Messages : 4
Enregistré le : 30 Jan 2017, 09:53

Re: transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Messagepar Paul Valentine » 01 Mar 2017, 14:28

Effectivement, ça doit être les espaces qui doivent poser problème.
La solution n'est pas très élégante mais tu peux utiliser la fonction gsub() pour retirer tes espaces et passer ensuite ta variable en numeric:

Code : Tout sélectionner

PO$price=as.character(PO$price)
PO$price=gsub(" ","",PO$price) #Tu remplaces les espaces par "rien"
PO$price=as.numeric(PO$price)


C'est pas très joli mais je pense que ça peut marcher

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Messagepar Logez Maxime » 02 Mar 2017, 15:04

Bonjour,

Paul Valentine a écrit :La solution n'est pas très élégante mais tu peux utiliser la fonction gsub() pour retirer tes espaces et passer ensuite ta variable en numeric: ...
C'est pas très joli mais je pense que ça peut marcher
Ce n'est que mon avis mais je ne vois pas en quoi la solution que tu as donnée n'est pas élégante ? Il y a un problème de format au départ et tu as donné le moyen le plus simple et surement le plus efficace de répondre à la question de départ :-)

Cordialement,
Maxime

andre lederf
Messages : 2
Enregistré le : 08 Fév 2017, 17:11

Re: transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Messagepar andre lederf » 02 Mar 2017, 17:06

merci infiniment
le fichier est un .csv le format de la colonne est nombre.
je pensais que l'espace était juste pour l affichage car lorsqu on click ds la cellule il disparait...
néanmoins grâce a vous cela fonctionne
merci

mafab francoise
Messages : 25
Enregistré le : 01 Avr 2018, 16:14

Re: transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Messagepar mafab francoise » 24 Mai 2019, 16:33

Bonjour je relance le sujet
j'ai le même problème que je n'arrive cependant pas à résoudre
voici mon tableau de donnée :
Sites Mois Transect Taille Comportement Genre_coraux
1 Turtle_point Fevrier 1 30 mange Galaxea
2 Turtle_point Fevrier 1 45 cache roche
3 Turtle_point Fevrier 2 32 repos roche
4 Turtle_point Fevrier 2 35 repos roche
5 Turtle_point Fevrier 2 45 repos roche
6 Turtle_point Fevrier 3 40 repos roche
7 Turtle_point Fevrier 3 42 mange porites
8 Turtle_point Mars 1 70 cache acropora
9 Turtle_point Mars 2 80 cache porites
10 Turtle_point Mars 2 60 mange galaxea
11 Turtle_point Mars 3 50 repos roche

Je souhaiterai convertir ma variable genre_coraux en donnée quantitative afin d'étudier s'il existe une corrélation entre la taille et le genre de coraux consommé?

voici mon script
aa<-subset(data,Sites=="Turtle_point")
aa


aa$Genre_coraux=as.character(aa$Genre_coraux)
aa$Genre_coraux
aa$Genre_coraux=gsub("","",aa$Genre_coraux)
aa$Genre_coraux=as.numeric(aa$Genre_coraux)
aa$Genre_coraux
et j'ai toujours ce message d'erreur que je n'arrive pas à résoudre
Warning message:
NAs introduced by coercion
> aa$Genre_coraux
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[21] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

je vous remercie d'avance .
Marine

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Messagepar Pierre-Yves Berrard » 24 Mai 2019, 16:51

Bonjour,

Pour transformer une chaîne de caractères en nombre, il faut qu'elle contienne des chiffres.

Code : Tout sélectionner

as.numeric(c("Galaxea", "123", "123.4"))
[1]#>    NA 123.0 123.4

PS: le gsub est sans effet, vous remplacez rien par rien.
PY

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Messagepar Serge Rapenne » 24 Mai 2019, 18:11

Bonjour,

je dirais que ce dont tu as besoin est l'exact inverse du post d'origine. Je pense qu'il faut que tu transformes ta variable texte en factor. pour celà cf les fonctions factor ou as.factor

Serge

mafab francoise
Messages : 25
Enregistré le : 01 Avr 2018, 16:14

Re: transformer des données qualifiées en factor ( variable qualitative) en données numeriques (variable quantitative)

Messagepar mafab francoise » 25 Mai 2019, 03:25

Bonjour merci pour vos réponses
je pense que cela fonctionne :
aa<-subset(data,Sites=="Turtle_point")
aa
View(aa)

aa$Genre_coraux=as.factor(aa$Genre_coraux)
aa$Genre_coraux

aa$Genre_coraux=as.numeric(aa$Genre_coraux)
aa$Genre_coraux
plot(aa$Taille,aa$Genre_coraux)
cor.test(aa$Taille,aa$Genre_coraux,method="spearman")

Merci beaucoup.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité