transformar tablas str filas eliminar data crear columnas r csv read.table

str - tablas en r



Variables numéricas convertidas en factores al leer un archivo CSV (3)

Acabo de tener el mismo problema e intenté todas las correcciones en esta y otras publicaciones duplicadas. Ninguno realmente funcionó muy bien. La forma en que resolví solucionarlo fue en realidad en el lado de Excel. Si resaltas todas las columnas en tu archivo fuente (en excel), haz clic con el botón derecho del ratón ==> formatea las celdas y luego selecciona ''number'' importará perfectamente bien (siempre que no tengas caracteres no numéricos debajo del encabezado)

Intento leer un archivo .csv creado en Excel en R donde todos los vectores (columnas en el archivo CSV) son numéricos. Sin embargo, se convierten a factor cada vez que los importo.

Aquí hay una muestra de cómo se ve mi CSV:

Este es mi código:

options(StringsAsFactors=F) data<-read.csv("in.csv",dec=",",sep=";")

Como puede ver, me encargo de establecer de dec en "," y el sep en ";". Sin embargo, ¡todos los vectores que deberían ser numéricos son factores!

¿Puede alguien darme un consejo? ¡Gracias!


En realidad, podría haber conseguido que su código original funcionara: hay un pequeño error tipográfico (''stringsAsFactors'', no ''StringsAsFactors''). El comando de opciones no se quejará con el texto incorrecto, pero simplemente no funcionará. Cuando se hace correctamente, lo leerá como char, en lugar de factores. A continuación, puede convertir columnas al formato que desee.


Sus cadenas NA en el archivo csv, N/A , se interpretan como character y luego toda la columna se convierte en character . Si tiene stringsAsFactors = TRUE en options o en read.csv (predeterminado), la columna se convierte adicionalmente en factor . Puede usar el argumento na.strings para decirle a read.csv qué cadenas se deben interpretar como NA .

Un pequeño ejemplo:

df <- read.csv(text = "x;y N/A;2,2 3,3;4,4", dec = ",", sep = ";") str(df) df <- read.csv(text = "x;y N/A;2,2 3,3;4,4", dec = ",", sep = ";", na.strings = "N/A") str(df)

Actualiza el siguiente comentario

Aunque no es evidente a partir de los datos de muestra proporcionados, también hay un problema con las instancias de ''$'' concatenadas con los números, por ejemplo, ''$ 3,3''. Dichos valores se interpretarán como character , y luego dec = "," no nos ayuda. Necesitamos reemplazar tanto el ''$'' como el '','' antes de que la variable se convierta en numérica.

df <- read.csv(text = "x;y;z N/A;1,1;2,2$ $3,3;5,5;4,4", dec = ",", sep = ";", na.strings = "N/A") df str(df) df[] <- lapply(df, function(x){ x2 <- gsub(pattern = "$", replacement = "", x = x, fixed = TRUE) x3 <- gsub(pattern = ",", replacement = ".", x = x2, fixed = TRUE) as.numeric(x3) } ) df str(df)