web-dev-qa-db-fra.com

Que signifie l'erreur "Plus de colonnes que de noms de colonnes"?

J'essaie de lire un fichier .csv à partir de l'IRS et il ne semble pas être formaté de manière étrange.

J'utilise la fonction read.table(), que j'ai utilisée plusieurs fois dans le passé mais qui ne fonctionne pas cette fois; à la place, j'obtiens cette erreur:

data_0910<-read.table("/Users/blahblahblah/countyinflow0910.csv",header=T,stringsAsFactors=FALSE,colClasses="character")

Error in read.table("/Users/blahblahblah/countyinflow0910.csv",  : 
  more columns than column names

Pourquoi ça fait ça?

Pour référence, le .csv les fichiers peuvent être trouvés sur:

http://www.irs.gov/uac/SOI-Tax-Stats-County-to-County-Migration-Data-Files

(Ceux dont j'ai besoin se trouvent sous la section .csv de migration de comté à comté - soit les entrées, soit les sorties.)

15
user3084629

Il utilise des virgules comme séparateurs. Vous pouvez donc définir sep="," ou utilisez simplement read.csv:

x <- read.csv(file="http://www.irs.gov/file_source/pub/irs-soi/countyinflow1011.csv")
dim(x)
## [1] 113593      9

L'erreur est causée par des espaces dans certaines des valeurs et des guillemets sans correspondance. Il n'y a pas d'espace dans l'en-tête, donc read.table pense qu'il y a une colonne. Ensuite, il pense qu'il voit plusieurs colonnes dans certaines des lignes. Par exemple, les deux premières lignes (en-tête et première ligne):

State_Code_Dest,County_Code_Dest,State_Code_Origin,County_Code_Origin,State_Abbrv,County_Name,Return_Num,Exmpt_Num,Aggr_AGI
00,000,96,000,US,Total Mig - US & For,6973489,12948316,303495582

Et des guillemets inégalés, par exemple sur la ligne 1336 (ligne 1335), ce qui confondra read.table avec l'argument quote par défaut (mais pas read.csv):

01,089,24,033,MD,Prince George's County,13,30,1040
19
Matthew Lundberg

Pour les Allemands:

vous devez changer vos virgules décimales en un point dans votre fichier csv (dans Excel: Fichier -> Options -> Avancé -> "Séparateur décimal"), puis l'erreur est résolue.

3
Juschu

vous avez des caractères étranges dans votre titre #% - ou,

2
em_likefrom007