J'essaie de lire un fichier csv avec des noms de lignes répétés mais je n'ai pas pu. Le message d'erreur que je reçois est Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.
Le code que j'utilise est:
S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"))
Un exemple de mes données est donné ci-dessous:
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)
Toute aide serait appréciée.
la fonction voit les noms de ligne en double, vous devez donc y faire face. La façon la plus simple est probablement avec row.names = NULL , ce qui forcera la numérotation des lignes - en d'autres termes, il traite votre première colonne en tant que première dimension et non en tant que numéros de ligne, et ajoute ainsi des numéros de ligne (entiers consécutifs commençant par "1".
read.csv("S1N657.csv", header=T,fill=T, col.names=c("dam","anim","temp"), row.names=NULL)
essaye ça:
S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"),
row.names = NULL)[,-1]
Un problème que j'ai eu récemment était que le nombre de colonnes dans la ligne d'en-tête ne correspondait pas au nombre de colonnes que j'avais dans les données elles-mêmes. Par exemple, mes données étaient délimitées par des tabulations et toutes les lignes de données avaient un caractère de tabulation de fin. La ligne d'en-tête (que j'avais ajoutée manuellement) ne l'a pas fait.
Je voulais que les lignes soient numérotées automatiquement, mais à la place, il regardait ma première ligne comme nom de ligne. De la documentation (emphase ajoutée par moi):
row.names un vecteur de noms de lignes. Il peut s'agir d'un vecteur donnant les noms de lignes réels, ou d'un numéro unique donnant la colonne du tableau qui contient les noms de lignes, ou d'une chaîne de caractères donnant le nom de la colonne de table contenant les noms de lignes.
S'il y a un en-tête et que la première ligne contient un champ de moins que le nombre de colonnes, la première colonne de l'entrée est utilisée pour les noms des lignes. Sinon, si row.names est manquant, les lignes sont numérotées.
L'utilisation de row.names = NULL force la numérotation des lignes. Les noms de lignes manquants ou NULL génèrent des noms de lignes considérés comme "automatiques" (et non conservés par as.matrix).
L'ajout d'un caractère de tabulation supplémentaire à la ligne d'en-tête a fait que la ligne d'en-tête a le même nombre de colonnes que les lignes de données, résolvant ainsi le problème.
Deviner que votre fichier csv a été converti à partir de xlsx.Ajouter une virgule à la fin de la première ligne, supprimer la dernière ligne, terminé
J'obtenais la même erreur "dupliquer 'row.names' ne sont pas autorisés" pour un petit CSV. Le problème était que quelque part en dehors de la zone de graphique 14x14 que je voulais, il y avait une cellule aléatoire avec un espace/d'autres données.
J'ai découvert la réponse lorsque je l'ai exécutée "row.names = NULL" et qu'il y avait plusieurs lignes de données vides sous ma table (et donc plusieurs noms de lignes en double tous "vides").
La solution était de supprimer toutes les lignes/colonnes en dehors de la zone du tableau, et cela a fonctionné!
En bref, vérifiez les noms de vos colonnes. Si votre première ligne est le nom des colonnes, il peut vous manquer un ou plusieurs noms.
Exemple:
"a","b","c"
a,b,c,d
a,b,c,d
L'exemple ci-dessus provoquera une erreur row.name car chaque ligne a 4 valeurs, mais seules 3 colonnes sont nommées.
Cela m'est arrivé lorsque je construisais un csv à partir d'une ressource en ligne.
dans mon cas, le problème venait du fichier Excel. Bien que cela semblait parfaitement organisé, cela n'a pas fonctionné et j'ai toujours eu le message: Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.
J'ai essayé de copier-coller ma matrice Excel sur une nouvelle feuille Excel vide et j'ai réessayé de la lire: ça a marché! Plus de message d'erreur!