[R-es] ¿Qué hace as.numeric()?

Mauricio Monsalvo m.monsalvo en gmail.com
Mar Ago 9 17:01:07 CEST 2016


Hola.
Hice algunas pruebas más y creo que encontré algunas soluciones, salvo que
me cuesta verificarlo.
En principio, importé los datos como caracteres:
pami <- read.csv2("Export.csv", dec=",", colClasses="character", header=T)
#csv2 porque el sep=";"
row.names(pami) <- row.names(pami) #Para asignar un id
pami.2 <- pami[, 6] #Solo PP, la variable que me interesa y tiene problemas
library(stringr)
library(plyr)
pami.2 <- str_replace(pami.2, pattern="\\,", replacement=".") #Para cambiar
la "," por el ".", porque no logré nunca que funcione adecuadamente sep=","
pami.2 <- as.numeric(pami.2) #convierte los caracteres a números.
pami.2 <- as.data.frame(pami.2) #para usar el merge después
Y luego volví a traer el archivo de base (pami) y lo pegué con merge luego
de crear el id nuevamente. Salvo problemas de memoria (que los tengo),
parece funcionar para mi caso concreto. Solo obtengo dos valores NA...
bastante bien.
No es una solución de fondo, pero de todos modos lo comparto como idea.
Creo que lo único valioso en sí es traer todos los datos como character y
luego llevarlo a las clases que nos interesan (int, numeric, factor, etc) a
medida que vamos aplicando las transformaciones. Va un poco en línea con lo
que sugiere Patricio debajo.
Javier, No importé los datos a MySQL porque en mi caso concreto me llevaría
tiempo adicional y no tengo suficiente dominio como para confiar que así
voy a resolver mi problema... además, estoy un poco cruzado con el tema y
quisiera poder resolverlo. En cambio, invertí el tiempo en intentar
conseguir que me los vuelvan a generar en un formato más normalizado.
Veremos qué resulta.
Carlos, mil disculpas pero por el tipo de datos y cuestiones contractuales
no puedo compartirlos... Lo haría convirtiendo los datos (ocultando
laboratorios, productos y precios) pero si pudiera hacer eso, no tendría el
problema que me lleva al foro. Disculpas!
Muchas gracias a todos por la paciencia y los aportes!
Saludos

El 5 de agosto de 2016, 1:26, Carlos Ortega <cof en qualityexcellence.es>
escribió:

> Hola Mauricio,
>
> Para hacer alguna prueba más, yo lo único que echo de menos es que nos
> pudieras dar un "ejemplo reproducible" y para esto no hay nada mejor que
> nos pases una parte representativa del conjunto de datos.
>
> Además de lo ya expuesto, se pueden utilizar otras alternativas de lectura
> del fichero a la de "read.table()", por ejemplo la que ofrece "fread()" del
> paquete "data.table" o la "read_csv()" del paquete "readr". En los que no
> hace falta declarar a priori el tipo de cada columna ya que automática los
> infieren de una lectura inicial (200-300 líneas).
>
> Gracias,
> Carlos Ortega
> www.qualityexcellence.es
>
> El 5 de agosto de 2016, 5:04, <javier.ruben.marcuzzi en gmail.com> escribió:
>
>> Estimado Mauricio Monsalvo
>>
>> ¿Puede usar esos datos importados a una base de datos? Por ejemplo en
>> mysql un código como puede ser:
>> SELECT email, COUNT(*) Total
>> FROM clientes
>> GROUP BY email
>> HAVING COUNT(*) > 1
>>
>> Para buscar los duplicados (en este caso correos electrónicos), la idea
>> es conocer las variables y cantidades, una vez que las conoce puede
>> actualizar para ir normalizando los datos (desde el punto de vista de la
>> base de datos). Luego solo tendría un problema, conocer los decimales, pero
>> eso ya fue resuelto anteriormente por la base de datos al importar los
>> datos, o fueron importados como cadena (varchar, etc.). En ese caso tendría
>> unas nuevas columnas que llenaría con consultas.
>>
>> Cuándo pueda tener los datos bien almacenados, recién piense en
>> importarlos a R, datos mal almacenados son casi imposible de recuperar en R.
>>
>> Por desgracia datos mal almacenados es algo común, ¿puede ingresar al
>> almacenamiento a un nivel más adecuado?, me refiero a algo más próximo a
>> los originales para poder usted mismo acomodarlos para luego exportarlos a
>> R.
>>
>> Otra forma pero que requiere conocimientos de programación, es leer el
>> archivo desde un lenguaje de programación, C#, Java, C++, F, y acomodar
>> desde alguno de estos, pero para eso también debería conocer muy bien como
>> acomodar los datos, sería muy sencillo cometer un error lógico (hay
>> resultados procesados correctamente, pero obteniendo valores inadecuados,
>> por el error de lógica).
>>
>> Javier Rubén Marcuzzi
>>
>> De: Mauricio Monsalvo
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>



-- 
Mauricio

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es