Je rencontre un problème lors de la conversion du caractère de pourcentage en numérique. Par exemple, je veux convertir "10 %" en 10 %, mais
as.numeric("10%")
renvoie NA
. Avez-vous des idées?
Je rencontre un problème lors de la conversion du caractère de pourcentage en numérique. Par exemple, je veux convertir "10 %" en 10 %, mais
as.numeric("10%")
renvoie NA
. Avez-vous des idées?
10 % n'est par définition pas un vecteur numérique. Par conséquent, la réponse NA est correcte. Vous pouvez convertir un vecteur de caractères contenant ces nombres en numérique de cette manière :
percent_vec = paste(1:100, "%", sep = "")
as.numeric(sub("%", "", percent_vec))
Cela fonctionne en utilisant sub pour remplacer le caractère % par rien.
Débarrassez-vous d'abord des caractères superflus :
topct <- function(x) { as.numeric( sub("\\D*([0-9.]+)\\D*","\\1",x) )/100 }
my.data <- paste(seq(20)/2, "%", sep = "")
> topct( my.data )
[1] 0.005 0.010 0.015 0.020 0.025 0.030 0.035 0.040 0.045 0.050 0.055 0.060 0.065 0.070 0.075 0.080
[17] 0.085 0.090 0.095 0.100
(Merci à Paul pour les données d'exemple).
Cette fonction gère désormais : les caractères non numériques de début, les caractères non numériques de fin et laisse le point décimal s'il est présent.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.