2017-07-20 2 views
0

J'ai une liste d'ID magasin et leur Zipcodes dans un vecteur numérique 2 colonne (en R). J'utilise le paquet "Code postal" (https://cran.rproject.org/web/packages/zipcode/zipcode.pdf) et j'ai accès aux coordonnées de longitude/latitude pour ces codes postaux. Le paquet de code postal a un cadre de données avec chaque code postal, ville, état, longitude et latitude pour tous les codes postaux (comme une grande base de données).match une colonne de trame de données à un autre, tirer dans d'autres colonnes, dans un grand ensemble de données combine

Je cherche à obtenir la longitude et latitude coordonnées pour mes Zipcodes, et les ajouter sous forme de colonnes 3 et 4 (à savoir ID magasin, code postal, Longtitude, Latitude)

Toute pensée? Merci!

EDIT: J'ai essayé la fonction de fusion (c.-à-d.) Total < fusionné (CleanData, code postal, par = zip) et j'obtiens une erreur car ils doivent avoir le même nombre de colonnes?

Répondre

0

Le nom de colonne passé comme argument by doit être joint entre guillemets. Vous n'avez pas besoin l'argument by dans la fusion dans cet exemple, si zipcode est la seule colonne commune dans les deux dataframes.

jeux de données Exemple:

#cleanData 
d1<-tibble::tribble(~z,~id,131,1,114,2,155,5) 

#zipcode 
d2<- 
tibble::tribble(~z,~x,~y,131,2,5,166,2,6,162,6,5,177,7,1,114,2,1,155,5,9) 

result <- merge(d1,d2) 

donne

 z id x y 
    1 114 2 2 1 
    2 131 1 2 5 
    3 155 5 5 9 

Vous pouvez supprimer les colonnes inutiles du résultat dataframe en utilisant dplyr::select() simplement. Supposons que vous n'avez pas besoin colonne y (qui peut être un nom d'état, par exemple)

result <- dplyr::select(result, z, id, x) 
0

Nous avons fini en utilisant ceci: How to join (merge) data frames (inner, outer, left, right)?

essentiellement I utilisé la fonction externe gauche parce que je voulais garder tous les codes postaux dans ma base de données de magasin. Je crois que la réponse ci-dessus éliminerait les codes postaux introuvables dans la deuxième liste de codes postaux.