<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Récemment, un client m'a demandé comment obtenir un tableau de codes postaux à 9 chiffres avec des valeurs de latitude et de longitude pouvant être importées dans JMP afin de le fusionner avec un tableau de données JMP existant contenant des codes postaux à 9 chiffres. Cette question était nouvelle pour moi et quelqu'un m'a suggéré de peut-être utiliser SAS PROC GEOCODE. Cependant, je savais que le client n'était pas un programmeur SAS, donc j'espérais trouver une voie heureuse qui n'incluait pas le besoin d'apprendre à programmer en SAS.
J’ai d’abord vérifié le complément JMP Geocoder, mais il ne semblait s’appliquer qu’à Geocode au niveau zip à 5 chiffres. Le client possédait déjà ces emplacements X / Y lat / lon mais avait besoin de quelque chose de plus granulaire, d’où le désir de zips à 9 chiffres. Je suivant a examiné PROC GEOCODE et il s’est avéré que celui-ci nécessitait deux tables, votre table de données et un tableau comportant les zips à 9 chiffres liés aux valeurs de latitude et de longitude. Mais j'avais déjà les codes postaux dont j'avais besoin - si je pouvais simplement trouver la table d'index, il semblerait que je n'aurais pas besoin de la procédure proc pour rejoindre les tables, même si elle offrait des correspondances floues qui ne seraient pas jointes directement.
J'ai vérifié avec le support technique de SAS et ils ont dit que la table de données qui comprend les fichiers zip à 9 chiffres se trouve sur un lien cette page sous la Zip + 4 section de géocodage. Y Vous avez besoin d’un ID de profil SAS pour télécharger le fichier zip que vous possédez déjà si vous lisez ceci et si vous êtes membre de la communauté JMP. Dans tous les cas, il est gratuit de configurer un profil SAS. Le fichier est à partir de 2006, il est donc obsolète, mais un Par exemple, la version actuelle des données TIGER n'inclut pas les données zip + 4. La section suivante de la page mentionne une source payante (Melissa Data) qui fournit des informations plus actuelles et la met à jour moyennant des frais.
Une fois que vous avez téléchargé le fichier zip, vous pouvez voir qu'il contient un fichier readme, un fichier CSV (ZIP4.CSV) et un programme SAS. Je pensais que je devrais importer le fichier CSV directement dans JMP à ce moment-là, mais c’est là que j’ai touché le problème # 1: le fichier CSV manquait d’en-têtes de colonne! Je suis retourné au programme SAS et ai importé les données à l'aide de ces données. Les en-têtes de colonne ont été ajoutés pour que je puisse voir ce qu'ils étaient. Cependant, le programme qui a ajouté les noms de colonne est également apparu pour réorganiser les colonnes. Il est donc devenu un peu un jeu de correspondance pour déterminer quelles colonnes du fichier CSV correspondaient aux colonnes nommées de la table SAS.
Maintenant, je suis retourné dans JMP pour extraire le fichier SAS importé contenant les en-têtes de colonne, et c’est là que j’ai rencontré le problème 2. Certaines des zips à 5 chiffres ont commencé par "00" ou "0" et la colonne était traitée comme des données numériques lors de son importation de CSV dans JMP, de sorte que les 0 premiers étaient supprimés de ces zips lors de leur importation. J'ai vérifié les propriétés de colonne et un format SAS Z5 était défini sur la colonne, mais j'en ai parlé à Xan et il a confirmé que JMP ne comprenait pas ce format de code postal pour le moment.
Bien que j'aurais pu corriger cela avec une colonne de formule conditionnelle après coup en modifiant la colonne en caractère et en ajoutant 0, 1 ou 2 zéros en fonction de la longueur de chaque zip, il a suggéré que la solution la plus rapide pourrait être de réimporter le fichier CSV. fichier en utilisant le mode Aperçu d'importation de texte de JMP, ce qui me permettrait de modifier le type de colonne en caractère et de renommer les colonnes dont j'avais besoin avant l'importation. J'ai ouvert mon fichier SAS et déterminé les noms d'en-tête de colonne pour les colonnes dont j'avais besoin et c'est ce que j'ai fait.
Pour importer le fichier ZIP4.CSV vous-même, vous devez cliquer sur Fichier> Nouveau script dans JMP, puis collez le texte ci-dessous dans une fenêtre de script. Placez votre curseur au début de la première ligne et cliquez sur le bouton Exécuter le script de la barre d’outils. Vous pouvez survoler pour rechercher ce bouton avec une info-bulle ou cliquer avec le bouton droit de la souris dans la fenêtre de script et choisir Exécuter le script. Comme indiqué ci-dessous, vous devez indiquer le chemin correct sur votre ordinateur vers le fichier que vous avez téléchargé et décompressé à partir du site Web de support SAS lié au lien ci-dessus.
Noms par défaut ici ( 1 ) ;
// Remplacez le chemin ci-dessous par le chemin du fichier CSV enregistré sur votre machine.
zipdata = Ouvrir (
"C: \ \ ZIP4.csv" ,
colonnes (
Colonne ( "ZIP *: FRANÇAIS" , Personnage , "Nominal" ) ,
Colonne ( "ZIP + 4" , Personnage , "Nominal" ) ,
Colonne ( "c000003" , Personnage , "Nominal" ) ,
Colonne ( "Ville" , Personnage , "Nominal" ) ,
Colonne ( "c000005" , Personnage , "Nominal" ) ,
Colonne ( "c000006" , Personnage , "Nominal" ) ,
Colonne ( "c000007" , Personnage , "Nominal" ) ,
Colonne ( "c000008" , Numérique , "Continu" , Format ( "Meilleur" , dix )) ,
Colonne ( "c000009" , Numérique , "Continu" , Format ( "Meilleur" , dix )) ,
Colonne ( "c0000010" , Numérique , "Continu" , Format ( "Meilleur" , dix )) ,
Colonne ( "X" , Numérique , "Continu" , Format ( "Meilleur" , dix )) ,
Colonne ( "Y" , Numérique , "Continu" , Format ( "Meilleur" , dix )) ,
Colonne ( "c0000013" , Personnage , "Nominal" ) ,
Colonne ( "c0000014" , Personnage , "Nominal" )
) ,
Importer les configurations(
Fin de ligne (CRLF , CR , LF) ,
Fin de champ (virgule , CSV ( 0 )) ,
Citations de bande ( 1 ) ,
Utilisez Apostrophe comme guillemet ( 0 ) ,
Analyser le fichier entier ( 1 ) ,
Traiter les colonnes vides comme numériques ( 0 ) ,
CompressNumericColumns ( 0 ) ,
CompressCharacterColumns ( 0 ) ,
CompressAllowListCheck ( 0 ) ,
Étiquettes( 0 ) ,
Les noms de colonne commencent ( 1 ) ,
Les données commencent ( 1 ) ,
Lignes à lire ( "Tout" ) ,
Règle année ( "20xx" )
)
) ;
// Vous pouvez sélectionner et supprimer les colonnes non nommées du tableau. Il s'agit de détails liés au recensement dont vous n'avez pas vraiment besoin. Si vous trouvez que vous faites, faites le moi savoir.
Comme je l'ai mentionné plus haut, je n'ai pas effectué l'exercice de correspondance pour obtenir tous les noms de colonne corrects pour toutes les colonnes de ce fichier car je n'avais pas besoin des attributs liés au recensement, mais uniquement du code postal, de la ville et de X / Y. coordonnées correspondant à la latitude et la longitude. Si vous avez accès à SAS, vous pouvez exécuter un script pour importer le fichier dans SAS afin d’afficher tous les noms de colonnes et d’ajuster ce script afin de nommer correctement toutes les colonnes génériques c000003, c000004, etc. ou pas. SAS, veuillez ajouter un commentaire ici et je reviendrai pour terminer ce travail.
Après avoir exécuté le script pour générer le tableau et le sauvegarder, vous pouvez faire glisser les X et Y vers les zones de dépôt dans le générateur de graphique pour afficher l'emplacement des codes postaux. Ils sont si denses qu'ils révèlent en grande partie la forme du pays!

La table importée contient environ 16,6 millions de lignes et 14 colonnes. Ma dernière table était encore un demi-litre lorsque je n’ai plus que les 5 colonnes dont j’avais besoin.
Ensuite, vous devrez joindre cette table à votre table JMP existante contenant des zips à 9 chiffres. Un facteur important consiste à déterminer si le format de votre code postal correspond au format du tableau importé, qui comporte le code postal à 5 chiffres et une extension à 4 chiffres dans des colonnes séparées. Si votre table de données le fait aussi, alors vous devriez être prêt à le faire Tables> Joindre , en choisissant de joindre les deux tables, Par correspondance de colonnes, et en choisissant les bonnes colonnes pour faire correspondre les deux colonnes.
Toutefois, si vous avez besoin d'une colonne au format XXXXX-XXXX parce que c'est le format dans lequel votre tableau de données contient les codes postaux, vous pouvez procéder comme suit pour le tableau que vous venez d'importer.
- Faites un clic droit sur la colonne vide à la droite du tableau et choisissez Nouvelles colonnes…
- Dans la boîte de dialogue qui s’ouvre, nommez la nouvelle colonne ZIP CODE et, sous Propriétés de la colonne pulldown, choisissez Formule . Cela ouvre l'éditeur de formules de JMP.
- Cliquez sur ZIP dans le sélecteur de colonne sous le menu déroulant Colonnes de table, puis choisissez Personnage dans la zone de sélection de colonne sous la section Fonctions et choisissez Concat de la liste popup. Tapez '-' dans la case vide qui s'ouvre.
- Cliquez sur Caractère> Concat à nouveau, et avec la nouvelle zone vide sélectionnée, choisissez la colonne Zip + 4 dans la zone de sélection de colonne du tableau.
- Vous devriez voir une formule comme celle-ci:

Une fois que votre formule ressemble à celle ci-dessus, cliquez sur OK dans l’éditeur de formules, puis à nouveau sur OK dans la boîte de dialogue des colonnes. Cela devrait ajouter une nouvelle colonne à votre table appelée ZIP CODE qui contient des zips au format 00601-2103. Vous pouvez ensuite rejoindre votre table de données d'origine contenant des zips dans ce format.
Les deux premières lignes du fichier CSV semblent s'être un peu égarées lors de l'importation, mais je ne sais pas pourquoi, sauf si les problèmes existaient dans le fichier CSV d'origine. Ils sont facilement réparés.
J'espère que cette information pourrait être utile à quelqu'un d'autre ayant besoin de données à code postal à 9 chiffres. Encore une fois, ce n'est pas la version la plus récente de ces données qui existe, mais cela pourrait être suffisant pour certaines applications. Si vous avez besoin d'une meilleure correspondance approximative des données d'adresse ou de code postal et que vous avez accès à SAS, vous pouvez également consulter PROC GEOCODE.
PS Je suis convaincu qu'il existe de meilleurs moyens de le faire via le script et l'intégration SAS, mais pour aider un client qui n'était ni un scripteur ni un utilisateur de SAS, je devais trouver un itinéraire largement JMP uniquement interactif. .
jeff.perkinson