R et as.numeric () [fermé]

Fermé. Cette question est hors sujet . Il naccepte pas les réponses actuellement.

Commentaires

  • Quelle est exactement la question? Vous voulez (-0,921,0,389593) comme vecteur numérique?

Réponse

Cest parce que vous avez lu les nombres comme facteurs; si vous utilisez read.table, essayez header=T ou restructurez les données avant de les lire. Un exemple de fichier devrait être utile pour le résoudre.

La solution de contournement serait de convertir dabord les facteurs en chaînes en utilisant as.character, puis de revenir en nombres avec as.numeric.

Edit: Code fonctionnant pour lexemple fourni:

readLines("<filename>")->z read.table(textConnection(z[-grep("V",z)])) 

Commentaires

  • @mbq Ou utilisez largument colClasses dans read.table()?
  • @ chl Possiblement; dépend de lapparence de ces données.
  • " Cest parce que vous avez lu les nombres comme des facteurs; si vous utilisez read.table, essayez header = T ou restructurez les données avant de les lire. Un échantillon du fichier devrait être utile pour le résoudre. " nop. " La solution de contournement consisterait à convertir dabord les facteurs en chaînes en utilisant as.character, puis à nouveau en nombres avec as.numeric. " nop. même résultat.
  • @kwak – supprimez ces " V1 V2 … " du fichier avant de faire nimporte quoi. as.numeric a gagné ' t travailler avec des éléments non convertibles dans le vecteur.
  • @mbq: > qui a fait laffaire . Je mattendais à autre chose.

Réponse

Cela vous aiderait-il?

> a <- as.data.frame(matrix(scan("1.txt", what="character", na.strings=c("NA",paste("V",1:6,sep=""))), nc=13, byrow=T)) > class(a[,1]) [1] "factor" > for (i in 1:ncol(a)) a[,i] <- as.numeric(as.character(a[,i])) > class(a[,1]) [1] "numeric" > summary(a) # should work here 

La façon dont vous importez des données na pas tellement dimportance; je pense que la partie critique consiste à convertir la valeur en caractère puis en numérique (cela permet de convertir les niveaux dun facteur en leurs équivalents numériques) .

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *