Es scheint, als ob die Dateien korrekt heruntergeladen, aber sie sind richtig: Wenn Sie read.csv
verwenden, um die Daten in R zu laden, dann werden einige der Spalten als numeric
interpretiert, und deshalb verlieren sie die führenden Nullen.
Code zu nehmen, die Dateien herunterlädt -
stateFIPScodes<-seq(10,13,1)
for(i in seq_along(stateFIPScodes)){
code <- stateFIPScodes[[i]]
URL <- paste0("https://www.census.gov/popest/data/intercensal/county/files/CO-EST00INT-ALLDATA-", code, ".csv")
destfile <- paste0("state2000_2010_",code,".csv")
download.file(URL, destfile)
}
Wenn wir verwenden Basis read.csv
wir keine nachfolgenden Nullen erhalten:
library(dplyr)
read.csv("state2000_2010_10.csv") %>%
select(1:5) %>%
head
#> SUMLEV STATE COUNTY STNAME CTYNAME
#> 1 50 10 1 Delaware Kent County
#> 2 50 10 1 Delaware Kent County
#> 3 50 10 1 Delaware Kent County
#> 4 50 10 1 Delaware Kent County
#> 5 50 10 1 Delaware Kent County
#> 6 50 10 1 Delaware Kent County
Das ist, weil die ersten paar Spalten als numerische lesen werden.
read.csv("state2000_2010_10.csv") %>% str()
#> 'data.frame': 780 obs. of 50 variables:
#> $ SUMLEV : int 50 50 50 50 50 50 50 50 50 50 ...
#> $ STATE : int 10 10 10 10 10 10 10 10 10 10 ...
#> $ COUNTY : int 1 1 1 1 1 1 1 1 1 1 ...
Es gibt zwei Möglichkeiten, dieses Problem zu beheben:
- manuell die Datentypen in
read.csv
passieren, oder verhindern, nur alle Umwandlungen von colClasses = "character"
hinzufügen.
- Verwenden Sie
readr::read_csv
, die es richtig behandelt.
Wir konnten nur verhindern automatischen Zwang:
read.csv("state2000_2010_10.csv", colClasses = "character") %>% str()
#> 'data.frame': 780 obs. of 50 variables:
#> $ SUMLEV : chr "050" "050" "050" "050" ...
#> $ STATE : chr "10" "10" "10" "10" ...
#> $ COUNTY : chr "001" "001" "001" "001" ...
#> $ STNAME : chr "Delaware" "Delaware" "Delaware" "Delaware" ...
Sie würden wählen müssen, welche Spalten Sie as.numeric
werfen wollten.
Oder Sie könnten die Spalten auswählen, z.
read.csv("state2000_2010_10.csv",
colClasses = c(
SUMLEV = "character",
STATE = "numeric",
COUNTY = "character"
)) %>%
select(1:5) %>%
head
#> SUMLEV STATE COUNTY STNAME CTYNAME
#> 1 050 10 001 Delaware Kent County
#> 2 050 10 001 Delaware Kent County
#> 3 050 10 001 Delaware Kent County
#> 4 050 10 001 Delaware Kent County
#> 5 050 10 001 Delaware Kent County
#> 6 050 10 001 Delaware Kent County
Zweitens könnte man readr
, verwenden Sie die intelligentere Spalte Typinferenz hat:
#> read_csv("state2000_2010_10.csv") %>%
#> select(1:5) %>%
#> head
#> # A tibble: 6 × 5
#> SUMLEV STATE COUNTY STNAME CTYNAME
#> <chr> <int> <chr> <chr> <chr>
#> 1 050 10 001 Delaware Kent County
#> 2 050 10 001 Delaware Kent County
#> 3 050 10 001 Delaware Kent County
#> 4 050 10 001 Delaware Kent County
#> 5 050 10 001 Delaware Kent County
#> 6 050 10 001 Delaware Kent County
Sie die Daten mit Excel oder einem Texteditor betrachten sind? Excel hat die Tendenz, die Nullen zu entfernen, indem Werte als Zahlen und nicht als Zeichenfolgen behandelt werden. Wenn Sie die Datei mit einem einfachen Texteditor öffnen und die Nullen dort stehen, zeigt dies an, dass Ihr Code in Ordnung ist und Sie Excel einfach überlisten müssen. – JorganPubshire
@JorganPubshire Danke. Ich habe die Dateien so konvertiert, dass sie als Textdokument anstelle von Excel heruntergeladen wurden und scheinbar die ursprüngliche Struktur beibehalten. – Meli