R and as.numeric () [gesloten]

Gesloten. Deze vraag is off-topic . Het accepteert momenteel geen antwoorden.

Opmerkingen

  • Wat is de vraag precies? U wilt (-0.921,0.389593) als numerieke vector?

Antwoord

Dit komt omdat u hebt gelezen de cijfers als factoren; als je read.table gebruikt, probeer dan header=T of herstructureer de gegevens voordat je ze leest. Een voorbeeld van het bestand zou nuttig moeten zijn om het op te lossen.

Een tijdelijke oplossing zou zijn om eerst factoren om te zetten in strings met as.character en dan terug naar getallen met as.numeric.

Bewerken: code werkt voor opgegeven voorbeeld:

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

Reacties

  • @mbq Of gebruik het colClasses argument in read.table()?
  • @ chl Mogelijk; hangt af van hoe deze gegevens eruitzien.
  • " Dit komt omdat u de getallen als factoren hebt gelezen; als je read.table gebruikt, probeer dan header = T of herstructureer de data voordat je ze leest. Een voorbeeld van het bestand zou nuttig moeten zijn om het op te lossen. " nop. " Een tijdelijke oplossing zou zijn om eerst factoren om te zetten naar strings met as.character en dan terug naar getallen met as.numeric. " nop. hetzelfde resultaat.
  • @kwak – verwijder die " V1 V2 … " uit het bestand voordat je begint iets. as.numeric won ' niet met niet-converteerbare elementen in vector.
  • @mbq: > dat deed het . Ik verwachtte iets anders.

Antwoord

Zou dat helpen?

> 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 

De manier waarop u gegevens importeert, doet er niet zoveel toe; ik denk dat het cruciale deel is als u waarde wilt converteren naar teken en dan naar numeriek (dit maakt het mogelijk om niveaus van een factor om te zetten naar hun numerieke tegenhangers) .

Reacties

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *