R and as.numeric () [closed]

Uzavřeno. Tato otázka je mimo téma . Momentálně nepřijímá odpovědi.

Komentáře

  • Jaká je přesně otázka? Chcete (-0,921,0,389593) jako numerický vektor?

Odpovědět

Je to proto, že jste si přečetli čísla jako faktory; pokud používáte read.table, zkuste header=T nebo před přečtením restrukturalizovat data. K vyřešení by měl být užitečný nějaký soubor souboru.

Řešením by bylo nejprve převést faktory na řetězce pomocí as.character a pak zpět na čísla s as.numeric.

Upravit: Kód funguje pro uvedený příklad:

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

Komentáře

  • @mbq Nebo použijte argument colClasses v read.table()?
  • @ chl Možná; záleží na tom, jak tato data vypadají.
  • " Je to proto, že jste čísla četli jako faktory; pokud používáte read.table, zkuste header = T nebo před čtením restrukturalizujte data. K vyřešení by měl být užitečný nějaký vzorek souboru. " nop. " Řešením by bylo nejprve převést faktory na řetězce pomocí as.character a pak zpět na čísla s as.numeric. " nop. stejný výsledek.
  • @kwak – před provedením odeberte ze souboru " V1 V2 … " cokoliv. as.numeric nebude pracovat ' s nepřeměnitelnými prvky ve vektoru.
  • @mbq: >, který to zvládl . Očekával jsem něco jiného.

Odpověď

Pomohlo by to?

> 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 

Způsob, jakým importujete data, na tom tolik nezáleží; myslím, že kritická část, pokud chcete převést hodnotu jako znak, pak jako numerickou (to umožňuje převést úrovně faktoru na jejich numerické protějšky) .

Komentáře

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *