Chciałbym przekonwertować zmienną czynnikową na zmienną numeryczną, ale as.numeric
nie daje oczekiwanego efektu.
Poniżej otrzymuję statystyki podsumowujące dla numerycznej wersji zmiennej na podstawie oryginalnej zmiennej. Środki ciągle liczą się o 1 ... być może (spekuluje) poziomy czynnika mają zarówno nazwy, jak i liczby, i spodziewam się, że wartość nowej zmiennej będzie pochodzić od nazwy, kiedy as.numeric
ma ona być używana?
> describe.by(as.numeric(df$sch), df$sch)
group:
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 5389 1 0 1 1 0 1 1 0 NaN NaN 0
---------------------------------------------------------
group: 001
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 19 2 0 2 2 0 2 2 0 NaN NaN 0
---------------------------------------------------------
group: 002
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 54 3 0 3 3 0 3 3 0 NaN NaN 0
---------------------------------------------------------
r
data-transformation
Michael Bishop
źródło
źródło
Odpowiedzi:
To prawda:
as.numeric(factor)
zwraca liczbę, którą R przypisuje do poziomu tego współczynnika. Możesz spróbowaćas.numeric(as.character(factor))
źródło
as.numeric(levels(f))[f]
jest zalecany i nieco bardziej wydajny niżas.numeric(as.character(f))
To jest FAQ 7.10 w R Często zadawane pytania. Tak, współczynnik jest przechowywany jako liczby całkowite od 1 do liczby poziomów, a as.numeric podaje kody bazowe. FAQ podaje 2 sposoby konwersji na numeryczne.
Zwykle dzieje się tak, ponieważ podczas odczytywania danych było coś w danych, co spowodowało, że R potraktował je jako czynnik zamiast liczb (często zbłąkany znak nienumeryczny). Często lepiej jest naprawić surowe dane (konwersja przekształci element nieliczbowy w NA) lub użyj argumentu colClasses, jeśli używasz read.table lub podobnego.
źródło