R és as.numeric () [zárt]

Zárt. Ez a kérdés témán kívül van . Jelenleg nem fogadja el a válaszokat.

Megjegyzések

  • Mi a kérdés pontosan? A (-0.921,0.389593) számjegyként kívánja használni?

Válasz

Ez azért van, mert elolvasta a számok mint tényezők; ha a következőt használja: read.table, próbálkozzon header=T, vagy az adatok átstrukturálása előtt olvassa el. A fájl néhány példája hasznos lehet a megoldásában.

A megoldás az lenne, ha a tényezőket először karakterláncokká konvertálná a as.character használatával, majd vissza a as.numeric.

Szerkesztés: A megadott példához tartozó kód működik:

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

Megjegyzések

  • @mbq Vagy használja a colClasses argumentumot a read.table()?
  • @ chl Esetleg; attól függ, hogyan néznek ki ezek az adatok.
  • " Ennek oka, hogy a számokat tényezőként olvasta el; ha a read.table fájlt használja, próbálkozzon a header = T paranccsal, vagy az adatok átstrukturálása előtt olvassa el. A fájl néhány mintájának hasznos lehet a megoldás. " nop. A " megoldás az lenne, ha először a tényezőket konvertálnánk karakterláncokká az as.character használatával, majd vissza az as.numeric használatával. " nop. ugyanaz az eredmény.
  • @kwak – távolítsa el a fájlból azokat az " V1 V2 … " fájlokat bármi. Az as.numeric nem fog ' dolgozni olyan vektorral, amelynek nem konvertálható elemei vannak.
  • @mbq: > . Valami mást vártam.

Válasz

Segítene ez?

> 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 

Az adatok importálásának módja nem számít annyira; szerintem a kritikus rész, ha az értéket karakterként, majd numerikusvá konvertálja (ez lehetővé teszi egy tényező szintjének konvertálását numerikus megfelelőikké) .

Megjegyzések

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük