Ho un dataframe di classe mista (numerico e fattore) in cui sto cercando di convertire l'intero frame di dati in numerico. Quanto segue illustra il tipo di dati sto lavorando con così come il problema che sto incontrando:Come convertire l'intero dataframe in numerico preservando i decimali?
> a = as.factor(c(0.01,0.02,0.03,0.04))
> b = c(2,4,5,7)
> df1 = data.frame(a,b)
> class(df1$a)
[1] "factor"
> class(df1$b)
[1] "numeric"
Quando provo e convertire l'intero frame di dati a numerico, altera i valori numerici. Per esempio:
> df2 = as.data.frame(sapply(df1, as.numeric))
> class(df2$a)
[1] "numeric"
> df2
a b
1 1 2
2 2 4
3 3 5
4 4 7
precedenti messaggi su questo sito suggeriscono utilizzando as.numeric(as.character(df1$a))
, che funziona alla grande per una colonna. Tuttavia, ho bisogno di applicare questo approccio a un dataframe che può contenere centinaia di colonne.
Quali sono le opzioni per la conversione di un intero dataframe da fattore a numerico, mantenendo i valori decimali numerici?
che segue è l'uscita desidero produrre dove a
e b
sono numerica:
a b
1 0.01 2
2 0.02 4
3 0.03 5
4 0.04 7
Ho letto i seguenti messaggi relativi, anche se nessuno di essi applicano direttamente a questo caso:
- How to convert a factor variable to numeric while preserving the numbers in R Ciò fa riferimento a una singola colonna in un dataframe.
- converting from a character to a numeric data frame. Questo post non tiene conto dei valori decimali.
- How can i convert a factor column that contains decimal numbers to numeric?. Questo si applica a una sola colonna in un frame di dati.
Ottimo modo per fare una domanda. [Questa domanda] (http://stackoverflow.com/questions/23206700/sum-on-a-factor-column-returns-incorrect-result) potrebbe essere utile. Questa è una fonte comune di frustrazione per le variabili di 'fattore'. – ilir