R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Faktorit numeerisiksi

Dataa tuodessa R:ään saattaa käydä niin, että numeerinen muuttaja muuttuu faktoriksi (tähän voi vaikuttaa esim. read.table-funktion stringsAsFactors-parametrilla). Alla muutama esimerkki siitä miten faktorin voi muuttaa takaisin numeeriseksi.

> testdata <- as.factor(c("1.1",NA,"2.3","5.5"))
> testdata2 <- as.factor(c("1.7","4.3","8.5",10.0))
> df <- data.frame(testdata, testdata2)
 
> str(df)
'data.frame':	4 obs. of  2 variables:
 $ testdata : Factor w/ 3 levels "1.1","2.3","5.5": 1 NA 2 3
 $ testdata2: Factor w/ 4 levels "1.7","10","4.3",..: 1 3 4 2
 
> df$testdata1 <- as.numeric(levels(df$testdata))[as.integer(df$testdata)]
> str(df)
'data.frame':	4 obs. of  3 variables:
 $ testdata : Factor w/ 3 levels "1.1","2.3","5.5": 1 NA 2 3
 $ testdata2: Factor w/ 4 levels "1.7","10","4.3",..: 1 3 4 2
 $ testdata1: num  1.1 NA 2.3 5.5
 
> fcts <- sapply(df, is.factor)
> df[fcts] <- lapply(df[fcts], 
                   function (x) as.numeric(levels(x))[as.integer(x)])
 
> df
  testdata testdata2 testdata1
1      1.1       1.7       1.1
2       NA       4.3        NA
3      2.3       8.5       2.3
4      5.5      10.0       5.5
 
> str(df)
'data.frame':	4 obs. of  3 variables:
 $ testdata : num  1.1 NA 2.3 5.5
 $ testdata2: num  1.7 4.3 8.5 10
 $ testdata1: num  1.1 NA 2.3 5.5

2 Responses to “Faktorit numeerisiksi”


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *