seleccionar - leyendo un archivo csv con nombres de fila repetidos en R
seleccionar columnas en r (6)
En mi caso el problema vino del archivo excel. Aunque parecía perfectamente organizado, no funcionó y siempre tuve el mensaje: Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate ''row.names'' are not allowed.
Intenté copiar y pegar mi matriz de Excel en una nueva hoja de Excel vacía y volví a intentar leerla: ¡funcionó! ¡Ya no hay mensaje de error!
Estoy intentando leer un archivo csv con nombres de fila repetidos pero no puedo. El mensaje de error que recibo es Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate ''row.names'' are not allowed.
El código que estoy usando es:
S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"))
Un ejemplo de mis datos se da a continuación:
did <- c("1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657")
aid <- c(101,102,103,104,105,106,107,108,109,110)
temp <- c(36,38,37,39,35,37,36,34,39,38)
data <- cbind(did,aid,temp)
Cualquier ayuda será apreciada.
En resumen, compruebe los nombres de sus columnas . Si su primera fila son los nombres de las columnas, puede que le falten uno o más nombres.
Ejemplo:
"a","b","c"
a,b,c,d
a,b,c,d
El ejemplo anterior causará un error row.name porque cada fila tiene 4 valores, pero solo se nombran 3 columnas.
Esto me sucedió cuando estaba construyendo un csv desde un recurso en línea.
Suponiendo que su archivo csv se convirtió de xlsx. Agregue una coma al final de la primera fila, elimine la última fila, listo
Un problema que tuve recientemente fue que el número de columnas en la fila del encabezado no coincidía con el número de columnas que tenía en los datos en sí. Por ejemplo, mis datos estaban delimitados por tabulaciones y todas las filas de datos tenían un carácter de tabulación al final. La fila de encabezado (que había añadido manualmente) no lo hizo.
Quería que las filas fueran numeradas automáticamente, pero en cambio estaba viendo mi primera fila como el nombre de la fila. De los documentos (énfasis agregado por mi):
row.names un vector de nombres de fila. Este puede ser un vector que proporciona los nombres de las filas reales, o un número único que proporciona la columna de la tabla que contiene los nombres de las filas, o una cadena de caracteres que proporciona el nombre de la columna de la tabla que contiene los nombres de las filas.
Si hay un encabezado y la primera fila contiene un campo menos que el número de columnas, la primera columna en la entrada se usa para los nombres de las filas. De lo contrario, si falta row.names, las filas están numeradas.
Usar row.names = NULL fuerza la numeración de filas. Los nombres de fila que faltan o NULOS generan nombres de fila que se consideran "automáticos" (y no se conservan por as.matrix).
Agregar un carácter de tabulación adicional a la fila del encabezado hizo que la fila del encabezado tuviera el mismo número de columnas que las filas de datos, resolviendo así el problema.
la función está viendo nombres de fila duplicados, por lo que necesita lidiar con eso. Probablemente la forma más fácil es con row.names = NULL , lo que forzará la numeración de las filas; en otras palabras, trata su primera columna como la primera dimensión y no como los números de las filas, y por lo tanto agrega números de filas (enteros consecutivos que comienzan con " 1 ".
read.csv("S1N657.csv", header=T,fill=T, col.names=c("dam","anim","temp"), row.names=NULL)
prueba esto:
S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"),
row.names = NULL)[,-1]