Converti fattore in numerico con la funzione as.numeric in R

Lasha Khintibidze 14 luglio 2021 R R Factor
  1. Usa la funzione as.numeric per convertire il fattore in numerico in R
  2. Combina le funzioni as.character e as.numeric per convertire il fattore in numerico in R
Converti fattore in numerico con la funzione as.numeric in R

Questo articolo dimostrerà più metodi su come convertire il fattore in numerico in R.

Usa la funzione as.numeric per convertire il fattore in numerico in R

Le funzioni as vengono generalmente utilizzate per convertire esplicitamente il tipo di dati in un altro tipo. Il processo di conversione è chiamato coercizione nella terminologia R e denota il concetto di casting presente in altri linguaggi di programmazione. Quando chiamiamo la funzione as.logical, cerca di forzare l’argomento passato al tipo logico. Allo stesso modo, as.character e as.numeric convertono gli argomenti dati nei tipi corrispondenti. Si noti che qualsiasi numero (eccetto zero) convertito nel tipo logico rappresenta un valore TRUE, anche negativo.

> as.logical(31)
[1] TRUE

> as.logical(-31)
[1] TRUE

> as.character(31)
[1] "31"

> as.numeric(FALSE)
[1] 0

> as.numeric(TRUE)
[1] 1

R implementa anche regole di coercizione di tipo implicite, necessarie quando vengono eseguite operazioni aritmetiche sui vettori costituiti da tipi diversi. Come dimostrato nel seguente frammento di codice, se un vettore atomico contiene una stringa di caratteri, anche ogni altro elemento viene convertito nella stringa. Se il vettore include elementi misti di logica, numeri e stringhe, vengono forzati ai tipi di stringa. Infine, quando il vettore contiene numeri e logica, questi ultimi vengono convertiti in numeri.

> v1 <- c(1, "two", 3, 4, 5, 6)

> typeof(v1)
[1] "character"

> v1 <- c(T, "two", 3, 1, F, T)

> typeof(v1)
[1] "character"

> v1 <- c(1, T, 3, F, 5, 6)

> typeof(v1)
[1] "double"

Quando si converte un fattore in numerico, è importante notare che as.numeric restituirà solo la rappresentazione intera sottostante, che è per lo più priva di significato e non corrisponde ai livelli dei fattori. Si può esaminare come un oggetto fattore viene memorizzato internamente utilizzando la funzione unclass. Si noti che il fattore f2 ha un indice di 2 1 2 3, che viene generalmente restituito utilizzando la chiamata as.number come mostrato nel prossimo esempio di codice:

> f2 <- factor(c(3, 2, 3, 4))

> f2
[1] 3 2 3 4
Levels: 2 3 4

> f2.n <- as.numeric(f2)

> unclass(f2)
[1] 2 1 2 3
attr(,"levels")
[1] "2" "3" "4"

> f2.n
[1] 2 1 2 3

Combina le funzioni as.character e as.numeric per convertire il fattore in numerico in R

I livelli dei fattori possono essere convertiti nel tipo intero combinando le funzioni as.character e as.numeric. as.character restituisce i livelli dei fattori come stringhe di caratteri. Quindi possiamo chiamare la funzione as.numeric per forzare la stringa in numeri.

> f2 <- factor(c(3, 2, 3, 4))

> f2.c <- as.character(f2)

> f2.c
[1] "3" "2" "3" "4"

> f2.c <- as.numeric(as.character(f2))

> f2.c
[1] 3 2 3 4