Wat betekent de foutmelding ‘Meer kolommen dan kolomnamen’?

Ik probeer een .csv-bestand van de IRS in te lezen en het lijkt niet op een vreemde manier geformatteerd te zijn.

Ik gebruik de functie read.table(), die ik in het verleden verschillende keren heb gebruikt, maar deze keer werkt het niet; in plaats daarvan krijg ik deze foutmelding:

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

Waarom doet het dit?

Ter referentie: de .csv-bestanden zijn te vinden op:

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

(Degene die ik nodig heb staan onder de sectie CSV-migratie van provincie naar provincie – ofwel instroom of uitstroom.)


Antwoord 1, autoriteit 100%

Het gebruikt komma’s als scheidingstekens. U kunt dus ofwel sep=","instellen of gewoon read.csvgebruiken:

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

De fout wordt veroorzaakt door spaties in sommige waarden en niet-overeenkomende aanhalingstekens. Er zijn geen spaties in de kop, dus read.tabledenkt dat er één kolom is. Dan denkt het dat het meerdere kolommen in sommige rijen ziet. Bijvoorbeeld de eerste twee regels (koptekst en eerste rij):

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

En ongeëvenaarde aanhalingstekens, bijvoorbeeld op regel 1336 (rij 1335), die read.tableverwarren met het standaardargument quote(maar niet read.csv):

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

Antwoord 2, autoriteit 22%

je hebt vreemde tekens in je kop # % — of ,


Antwoord 3, autoriteit 13%

Voor de Duitsers:

je moet je decimale komma’s veranderen in een punt in je csv-bestand (in Excel:File -> Options -> Advanced -> “Decimal seperator”), dan is de fout opgelost.


Antwoord 4

Afhankelijk van de gegevens (bijv. tsv-extensie) kan het tabblad als scheidingsteken gebruiken, dus u kunt sep = '\t'proberen met read.csv.


Antwoord 5

Deze fout kan optreden als uw dataframe sfgeometriekolommen heeft.

Other episodes