tabla - Importó un csv-dataset a R pero los valores se convierten en factores
insertar columna en data frame r (6)
Al importar archivos de datos csv, el comando de importación debe reflejar tanto la separación de datos entre cada columna (;) como el separador de números flotantes para sus valores numéricos (para la variable numérica = 2,5 esto sería ",").
El comando para importar un csv, por lo tanto, tiene que ser un poco más completo con más comandos:
stuckey <- read.csv2("C:/kalle/R/stuckey.csv", header=TRUE, sep=";", dec=",")
Esto debería importar todas las variables como enteros o numéricos.
Soy muy nuevo en R y tengo problemas para acceder a un conjunto de datos que importé. Estoy usando RStudio y utilicé la función Importar conjunto de datos al importar mi archivo csv y pegué la línea desde la ventana de la consola a la ventana de origen. El código se ve de la siguiente manera:
setwd("c:/kalle/R")
stuckey <- read.csv("C:/kalle/R/stuckey.csv")
point <- stuckey$PTS
time <- stuckey$MP
Sin embargo, los datos no son enteros ni numéricos, como estoy acostumbrado, pero por lo que cuando intento trazar las variables solo obtengo histogramas, no la trama habitual. Cuando reviso los datos parece estar en orden, solo que no puedo usarlo porque está en forma de factor.
Cuando me enfrento con este problema (que es bastante común), generalmente comienzo con options( stringsAsFactors=F )
A continuación, lea el archivo de la siguiente manera: my.tab <- read.table( "filename.csv", as.is=T )
Usualmente ayuda usar read.delim
.
De forma predeterminada, read.csv
comprueba las primeras filas de sus datos para ver si trata cada variable como numérica. Si encuentra valores no numéricos, asume que la variable es datos de caracteres, y las variables de caracteres se convierten en factores.
Parece que las variables PTS y MP en su conjunto de datos contienen elementos no numéricos, por lo que obtiene resultados inesperados. Puede forzar estas variables a numéricas con
point <- as.numeric(as.character(point))
time <- as.numeric(as.character(time))
Pero cualquier valor que no se pueda convertir se perderá. (Las preguntas frecuentes de R dan un método ligeramente diferente para la conversión de factor -> numérico, pero nunca puedo recordar de qué se trata).
Esto solo funcionó bien para mí al incluir strip.white = TRUE
en el comando read.csv
.
(Encontré la solución here ).
Soy nuevo en R también y me enfrenté exactamente al mismo problema. Pero luego miré mis datos y noté que se debía a que mi archivo csv estaba usando un separador de coma (,) en todas las columnas numéricas (por ejemplo, 1,233,444.56 en lugar de 1233444.56).
Quité el separador de coma en mi archivo csv y luego volví a cargar en R. Mi marco de datos ahora reconoce todas las columnas como números.
Estoy seguro de que hay una manera de manejar esto dentro de la función read.csv en sí misma.
Tanto la función de importación de datos (aquí: read.csv()
) como una opción global te ofrecen decir stringsAsFactors=FALSE
que debería solucionarlo.