2011-09-30 12 views
27

Powiel możliwe:
R - How to convert a factor to an integer\numeric in R without a loss of informationKonwersja czynnikiem numeryczne bez utraty informacji R (as.numeric() nie wydają się działać)

Poniższy fakt o jak. Funkcja numeric() została mi zwrócona:

> blah<-c("4","8","10","15") 
> blah 
[1] "4" "8" "10" "15" 
> blah.new<-as.factor(blah) 
> blah.new 
[1] 4 8 10 15 
Levels: 10 15 4 8 
> blah.new1<-as.numeric(blah.new) 
> blah.new1 
[1] 3 4 1 2 

Po przeliczeniu współczynnika na poziomy 4, 8, 1 0, i 15 do zmiennej ilościowej za pomocą as.numeric(), każda liczba jest konwertowana do rankingu, a oryginalne wartości są tracone.

Jak wziąć wektor "blah.new" o poziomach 10, 15, 4 i 8 i przekonwertować go na wartości liczbowe 10, 15, 4 i 8?

(Kwestia ta powstała ze względu na zbiorze gdzie zmienna ilościowa jest odczytywany przez read.table(), aby być czynnikiem)

Dziękuję !!!!

***** Aktualizacja: zdobione ******

blah.new1<-as.numeric(as.character(blah.new)) 

Jednak zastanawiam się, gdzie w dokumentacji as.numeric() to znaczy, że ta funkcja konwertuje argumentów na lista rankingów?

+1

Zostało to udokumentowane w sekcji ** Ostrzeżenie ** dla '? Factor' – Andrie

+1

Jest również w R-FAQ. –

+1

Ale nie jest to w żadnej z książek R, którą przeglądam i na pewno rzuciło mi to na pętlę właśnie teraz. – Amanda

Odpowiedz

26

Po pierwsze, czynnik składa się z indeksów i poziomów. Ten fakt jest bardzo ważny, gdy zmagasz się z czynnikiem.

Przykładowo

> z <- factor(letters[c(3, 2, 3, 4)]) 

# human-friendly display, but internal structure is invisible 
> z 
[1] c b c d 
Levels: b c d 

# internal structure of factor 
> unclass(z) 
[1] 2 1 2 3 
attr(,"levels") 
[1] "b" "c" "d" 

tu z ma 4 elementy.
Numer index to 2, 1, 2, 3 w tej kolejności.
Numer poziom jest powiązany z każdym indeks: 1 -> b, 2 -> c, 3 -> d.

Następnie, as.numeric konwertuje po prostu część współczynnika na liczbę liczbową.
as.character obsługuje indeks i poziomy oraz generuje wektor znaków wyrażony przez jego poziom.

?as.numeric mówi, że Czynniki są obsługiwane domyślną metodą.

Powiązane problemy