Egy factor változót, hogyan konvertáljunk numeric változóvá?

0
0
Ha van egy `factor` változó, ami valójában `numeric` (csak mondjuk egy adatbeolvasási hiba miatt (pl.: `NoN` érték szerepel a beolvasott adatbázisban) `factor`ként jelenik meg az adatbézisban és vissza szeretném konvertálni `numeric` változóvá, akkor az `as.numeric` parancs miért a `levels` értékeket adja vissza? (fac <- as.factor(rnorm(10, 2))) ## [1] -0.554380142390025 3.01286043579667 2.14062458421036 0.795901374774481 1.1525828780559 2.646332153364 2.17778700367428 1.98899049113525 3.01461688372712 2.2758493636756 ## Levels: -0.554380142390025 0.795901374774481 1.1525828780559 1.98899049113525 2.14062458421036 2.17778700367428 2.2758493636756 2.646332153364 3.01286043579667 3.01461688372712 as.numeric(fac) ## [1] 1 9 5 2 3 8 6 4 10 7 Mi a leghatékonyabb konverzió?
  • You must to post comments
0
0
Nem véletlenül alakult így ki, mindenesetre relatíve könnyen feloldható. Mivel nekünk a valójában a `levels` által jelölt értékekre van szükségünk: as.character(fac) ## [1] "-0.554380142390025" "3.01286043579667" "2.14062458421036" "0.795901374774481" "1.1525828780559" "2.646332153364" "2.17778700367428" "1.98899049113525" "3.01461688372712" ## [10] "2.2758493636756" ezért az egyik legegyszerűbb megoldás: as.numeric(as.character(fac)) ## [1] -0.5543801424 3.0128604358 2.1406245842 0.7959013748 1.1525828781 2.6463321534 2.1777870037 1.9889904911 3.0146168837 2.2758493637 Ami bár lehet egyszerű, de nem hatékony. Sok elemű vektorok esetén inkább ez ajánlott: as.numeric.factor <- function(x) { (as.numeric(levels(x)))[x] } as.numeric.factor(fac) ## [1] -0.5543801424 3.0128604358 2.1406245842 0.7959013748 1.1525828781 2.6463321534 2.1777870037 1.9889904911 3.0146168837 2.2758493637
  • You must to post comments
1 találat mutatása
Új válasz írása

Please first to submit.