2010-11-01 11 views
20

Estoy intentando leer un archivo csv con nombres de filas repetidos pero no pude. El mensaje de error que estoy recibiendo es Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.leyendo un archivo csv con nombres de filas repetidos en R

el código que estoy utilizando es: se da

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp")) 

Un ejemplo de mis datos 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.

Respuesta

22

la función está viendo nombres de las filas duplicadas, por lo que necesita para hacer frente a eso. Probablemente la manera más fácil sea con row.names = NULL, que forzará la numeración de filas; en otras palabras, trata su primera columna como la primera dimensión y no como los números de fila, y así agrega números de fila (consecutivos) enteros que comienzan con "1".

read.csv("S1N657.csv", header=T,fill=T, col.names=c("dam","anim","temp"), row.names=NULL) 
+0

eso es derecho doug! Veo que ha tratado mi primera columna (identificaciones de presas) como la primera dimensión como dijiste. excluí el bit [, -1] y luego cambié el nombre de mis columnas para ocuparme del archivo adicional que se agregó. ¡muchas gracias! – baz

+2

@Bazon, su encabezado no tiene un nombre para la primera columna. Si le das un nombre, el problema se resuelve automáticamente. – VitoshKa

+0

hola doug, ¿no debería haber una coma antes de row.names = NULL para que el script sea: read.csv ("S1N657.csv", encabezado = T, fill = T, col.names = c ("dam "," anim "," temp "), row.names = NULL – baz

3

probar esto:

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"), 
      row.names = NULL)[,-1] 
+1

hola kohske, eso funcionó. ¿Puedes explicar la última parte de ese código: [, -1] por favor? ¡Muchas gracias! – baz

+0

hola kohske, al ejecutar el script, descubrí que [, -1] parte de la secuencia de comandos eliminó los nombres de las filas o mi identificación de la presa (sí). – baz

+0

sí, tienes razón. si necesita la primera columna (probablemente los nombres duplicados de cada fila), elimine [, -1] del código anterior. – kohske

2

Un problema que tuve fue recientemente que el número de columnas de la fila de encabezado no coincide con el número de columnas que tenía en los propios datos. Por ejemplo, mis datos eran pestaña -delimitado y todas las filas de datos tenían un carácter de tabulación al final. La fila del encabezado (que había agregado manualmente) no.

Yo quería que las filas fueran au numerado, pero en cambio estaba mirando mi primera fila como el nombre de la fila. De los documentos (énfasis añadido por mí):

row.names un vector de nombres de fila. Puede ser un vector que proporcione los nombres reales de las filas, o un solo número que proporcione la columna de la tabla que contiene los nombres de las filas, o una cadena de caracteres que indique 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 de la entrada se usa para los nombres de fila. De lo contrario, si row.names falta, las filas están numeradas.

El uso de row.names = NULL fuerza la numeración de filas. Nombres de fila faltantes o NULOS generan nombres de fila que se consideran 'automáticos' (y no son conservados por as.matrix).

Al agregar un carácter de tabulación adicional a la fila de encabezado, la fila de encabezado tiene el mismo número de columnas que las filas de datos, lo que soluciona el problema.

0

Adivinar su archivo csv fue uno convertido de xlsx.Add una coma al final de la primera fila, quitar la última fila, hecho

+1

Su respuesta no parece responder a la pregunta que se hizo y es de baja calidad. Considere elaborar un poco más – avalancha

+0

This en realidad es útil ... Como explicó Travis Heeter anteriormente, esto podría deberse a que falta la columna en el encabezado. Si ese es el caso, una forma de resolverlo es abrir el archivo en un editor de texto, agregar una coma al final del primera fila y guárdala. Se debe buscar después. –

0

En resumen, ver sus nombres de columna. Si su primera fila es el nombre de las columnas, es posible que le falte 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 debido a que cada fila tiene 4 valores, pero sólo 3 columnas se nombran.

Esto me sucedió cuando estaba construyendo un csv de un recurso en línea.

Cuestiones relacionadas