¿Cómo leer datos cuando algunos números contienen comas como separador de miles?
Tengo un archivo csv donde algunos de los valores numéricos se expresan como cadenas con comas como separador de miles, por ejemplo, "1,513"
en lugar de 1513
. ¿Cuál es la forma más sencilla de leer los datos en R?
Puedo usar read.csv(..., colClasses="character")
, pero luego tengo que eliminar las comas de los elementos relevantes antes de convertir esas columnas a numéricas, y no puedo encontrar una manera clara de hacerlo.
No estoy seguro de cómo interpretarlo read.csv
correctamente, pero puede usarlo gsub
para reemplazar ","
con ""
y luego convertir la cadena para numeric
usar as.numeric
:
y <- c("1,200","20,000","100","12,111")
as.numeric(gsub(",", "", y))
# [1] 1200 20000 100 12111
Esto también se respondió anteriormente en R-Help (y en el segundo trimestre aquí ).
Alternativamente, puede preprocesar el archivo, por ejemplo en sed
Unix.
Puede hacer que read.table o read.csv realicen esta conversión de forma semiautomática. Primero cree una nueva definición de clase, luego cree una función de conversión y configúrela como un método "as" usando la función setAs de esta manera:
setClass("num.with.commas")
setAs("character", "num.with.commas",
function(from) as.numeric(gsub(",", "", from) ) )
Luego ejecute read.csv como:
DF <- read.csv('your.file.here',
colClasses=c('num.with.commas','factor','character','numeric','num.with.commas'))