Pedí un question about this a few months back, y pensé que la respuesta había resuelto mi problema, pero me encontré con el problema otra vez y la solución no funcionó para mí.X. en los nombres de mi columna de un marco de datos R
estoy importar un CSV:
orders <- read.csv("<file_location>", sep=",", header=T, check.names = FALSE)
Aquí está la estructura de la trama de datos:
str(orders)
'data.frame': 3331575 obs. of 2 variables:
$ OrderID : num -2034590217 -2034590216 -2031892773 -2031892767 -2021008573 ...
$ OrderDate: Factor w/ 402 levels "2010-10-01","2010-10-04",..: 263 263 269 268 301 300 300 300 300 300 ...
Si funciono con el comando length
en la primera columna, IdPedido, me sale esto:
length(orders$OrderID)
[1] 0
Si ejecuto el length
en OrderDate, devuelve c orrectly:
length(orders$OrderDate)
[1] 3331575
Este es un copiar/pegar del head
del CSV
.
OrderID,OrderDate
-2034590217,2011-10-14
-2034590216,2011-10-14
-2031892773,2011-10-24
-2031892767,2011-10-21
-2021008573,2011-12-08
-2021008572,2011-12-07
-2021008571,2011-12-07
-2021008570,2011-12-07
-2021008569,2011-12-07
Ahora, si volver a ejecutar el read.csv
, pero llevan a cabo la opción check.names
, la primera columna de la dataframe
cuenta ahora con una X en el inicio del nombre.
orders2 <- read.csv("<file_location>", sep=",", header=T)
str(orders2)
'data.frame': 3331575 obs. of 2 variables:
$ X.OrderID: num -2034590217 -2034590216 -2031892773 -2031892767 -2021008573 ...
$ OrderDate: Factor w/ 402 levels "2010-10-01","2010-10-04",..: 263 263 269 268 301 300 300 300 300 300 ...
length(orders$X.OrderID)
[1] 3331575
Esto funciona correctamente.
Mi pregunta es ¿por qué R
agrega una X. al principio del primer nombre de columna? Como puede ver en el archivo CSV, no hay caracteres especiales. Debe ser una carga simple. Agregar check.names
, aunque importará el nombre del CSV, hará que los datos no se carguen correctamente para que realice el análisis.
¿Qué puedo hacer para solucionarlo?
Nota al margen: me doy cuenta de que esto es poco importante. Estoy más frustrado por el hecho de que creo que estoy cargando correctamente, pero sin obtener el resultado que esperaba. Podría cambiar el nombre de la columna usando colnames(orders)[1] <- "OrderID"
, pero aún quiero saber por qué no se carga correctamente.
¿Puedes cortar y pegar el siguiente outp uts: 'cabeza (pedidos)' y 'cabeza (pedidos2)'? –
Tengo más curiosidad por ver el archivo csv sin formato real. ¿Puedes publicarlo en alguna parte y proporcionar un enlace para que podamos descargarlo e intentar reproducir este comportamiento? Cualquiera que sea el problema, supongo que la respuesta está en la estructura y el contenido precisos del archivo. – joran
No obtengo el pedido, pero luego el 'length (orders $ OrderID) [1] 0' –