2017-11-29 3 views
0

Ich geocodiert die Adresse und ich habe eine Tabelle wie in unten. Wie kann ich nur postal_code extrahieren?Exstract nur Postleitzahl von Geocodierung

library(googleway) 
a <- google_geocode(address = '1208 3RD AVE S,NASHVILLE,TN', key = "ABCDEFGHIJKLMN") 

a$results$address_components 
[[1]] 
    long_name  short_name         types 
1    1208   1208       street_number 
2 3rd Avenue South  3rd Ave S         route 
3 South Nashville South Nashville    neighborhood, political 
4  Nashville  Nashville     locality, political 
5 Davidson County Davidson County administrative_area_level_2, political 
6  Tennessee    TN administrative_area_level_1, political 
7 United States    US      country, political 
8   37210   37210       postal_code 
9    4104   4104      postal_code_suffix 

Antwort

1

Mit base Funktion:

subset(a$results$address_components[[1]], types == "postal_code") 

Mit tidyverse:

a$results$address_components[[1]] %>% filter(types == "postal_code") 

Aber ich denke, Sie alle Ihre Liste extrahieren möchten, so können Sie lapply verwenden, um eine Liste zu bekommen, Postleitzahlen:

lapply(a$results, function(x){ 
    subset(x[[1]], types == "postal_code")[["short_name"]] 
}) 

Oder wieder tidyverse einen Datenrahmen zu erhalten:

map(a$results, filter, .data = .[[1]], types == "postal_code") %>% 
    reduce(bind_rows) %>% 
    select(short_name) # optional... 
+0

Danke für den tollen Tipp! Eigentlich musste ich [[1]] hinzufügen, damit Ihr Code funktioniert. 'subset (a $ results $ address_components [[1]], types ==" postal_code ")' – joerna

+0

Ich bin froh, dass es geholfen hat. Ich habe diese andere Ebene der Liste übersehen, sorry. Hätte nicht mit einem reproduzierbaren Beispiel passieren können ;-) Überlegen Sie sich, die Antwort zu akzeptieren, wenn es jetzt für Sie funktioniert, danke. – Tino

Verwandte Themen