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.)
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
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.
vous avez des caractères étranges dans votre titre #% - ou,