<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Kürzlich hat mich ein Kunde gefragt, wie ich eine Tabelle mit 9-stelligen Postleitzahlen mit Breiten- und Längenwerten erhalten kann, die in JMP importiert werden können, um sie mit einer vorhandenen JMP-Datentabelle mit 9-stelligen Postleitzahlen zusammenzuführen. Diese Frage war neu für mich, und ich hatte einen Vorschlag von jemand anderem, dass SAS PROC GEOCODE vielleicht hilfreich wäre. Ich wusste jedoch, dass der Kunde kein SAS-Programmierer war, und ich hoffte, einen glücklichen Weg zu finden, der nicht dazu führte, dass man lernen musste, wie man in SAS programmiert.
Ich habe zuerst das JMP-Geocoder-Add-In ausgecheckt, aber es schien nur Geocode auf der 5-stelligen Zip-Ebene zu sein. Der Kunde hatte bereits diese X / Y-Lat / Lon-Standorte, brauchte jedoch etwas mehr Granularität, daher der Wunsch nach den 9-stelligen Reißverschlüssen. Ich als nächstes untersuchte PROC GEOCODE und es stellte sich heraus, dass der proc zwei Tabellen benötigte - Ihre Datentabelle und eine Tabelle mit den 9-stelligen Reißverschlüssen, die mit den Breiten- und Längenwerten verknüpft sind. Aber ich hatte bereits die Postleitzahlen, die ich brauchte. Wenn ich nur die Indextabelle finden konnte, schien es, als würde ich nicht die Prozedur brauchen, um die Tabellen zu verbinden, obwohl es ein paar unscharfe Übereinstimmungen bot, die eine direkte Verknüpfung nicht bieten würde.
Ich habe beim SAS-technischen Support eingecheckt und sie sagten, dass die Datentabelle, die die 9-stelligen ZIP-Dateien enthält, auf einem Link zu finden ist diese Seite unter dem Zip + 4 Geocoding-Bereich. Y Sie benötigen eine SAS-Profil-ID, um die ZIP-Datei herunterzuladen, die Sie bereits haben, wenn Sie dies lesen und Mitglied der JMP-Community sind. In jedem Fall ist es kostenlos, ein SAS-Profil einzurichten. Die Datei ist ab 2006, so ist es veraltet, aber a Außerdem enthält die aktuelle Version der TIGER-Daten keine zip + 4-Daten. Im nächsten Abschnitt der Seite wird eine bezahlte Quelle (Melissa Data) erwähnt, die aktuellere Informationen enthält und diese gegen eine Gebühr aktualisiert.
Wenn Sie die ZIP-Datei heruntergeladen haben, können Sie sehen, dass sie eine Readme-Datei, eine CSV-Datei (ZIP4.CSV) und ein SAS-Programm enthält. Ich dachte, ich würde die CSV zu diesem Zeitpunkt direkt in JMP importieren, aber hier traf ich auf Nummer 1: Die CSV-Datei hatte keine Spaltenüberschriften! Ich ging zurück zum SAS-Programm und importierte die Daten mit diesem. Die Spaltenüberschriften wurden hinzugefügt, damit ich sehen konnte, was sie waren. Das Programm, das Spaltennamen hinzufügte, schien jedoch auch die Spalten neu zu ordnen. Daher wurde es ein wenig passendes Spiel, um festzustellen, welche Spalten in der CSV mit den benannten Spalten in der SAS-Tabelle übereinstimmen.
Nun ging ich zurück zu JMP, um die importierte SAS-Datei mit den Spaltenüberschriften einzulesen, und hier traf ich auf Snag # 2. Einige der fünfstelligen Reißverschlüsse begannen mit "00" oder "0", und die Spalte wurde beim Importieren aus CSV in JMP als numerische Daten behandelt, sodass die führenden Nullen beim Import aus den Reißverschlüssen entfernt wurden. Ich habe die Spalteneigenschaften überprüft und es wurde ein Z5-SAS-Format in der Spalte festgelegt, aber ich habe mit Xan darüber gesprochen und er hat bestätigt, dass JMP dieses Postleitzahl-Format zurzeit nicht versteht.
Während ich dies mit einer bedingten Formelspalte nach der Tatsache hätte korrigieren können, indem ich die Spalte in ein Zeichen umwandle und 0, 1 oder 2 Nullen auf der Grundlage der Länge der einzelnen ZIPs hinzufüge, schlug er vor, dass die schnellste Lösung darin bestehen könnte, die CSV erneut zu importieren Datei mit dem JMP-Textimportvorschaumodus, der es mir ermöglicht, den Spaltentyp in Zeichen zu ändern und die vor dem Import benötigten Spalten umzubenennen. Ich öffnete meine SAS-Datei und ermittelte die Spaltenüberschriften der Spalten, die ich brauchte, und tat genau das.
Um die ZIP4.CSV-Datei selbst zu importieren, müssen Sie klicken Datei> Neues Skript Fügen Sie dann in JMP den folgenden Text in ein Skriptfenster ein. Setzen Sie den Cursor an den Anfang der ersten Zeile und klicken Sie in der Symbolleiste auf die Schaltfläche Skript ausführen. Sie können den Mauszeiger über eine Schaltfläche mit dem Tooltip bewegen, oder klicken Sie mit der rechten Maustaste in das Skriptfenster und wählen Sie Skript ausführen. Wie unten angegeben, müssen Sie auf den richtigen Pfad Ihres Computers zu der Datei verweisen, die Sie von der oben genannten SAS-Support-Website heruntergeladen und entpackt haben.
Namensvorgabe für Hier ( 1 ) ;
// Ersetzen Sie den Pfad unten durch den Pfad zu der auf Ihrem Computer gespeicherten CSV-Datei
zipdata = Öffnen (
"C: \ \ ZIP4.csv" .
Säulen(
Säule ( "POSTLEITZAHL" . Charakter . "Nominal" ) .
Säule ( "ZIP + 4" . Charakter . "Nominal" ) .
Säule ( "c000003" . Charakter . "Nominal" ) .
Säule ( "Stadt" . Charakter . "Nominal" ) .
Säule ( "c000005" . Charakter . "Nominal" ) .
Säule ( "c000006" . Charakter . "Nominal" ) .
Säule ( "c000007" . Charakter . "Nominal" ) .
Säule ( "c000008" . Numerisch . "Kontinuierlich" . Format ( "Beste" . 10 )) .
Säule ( "c000009" . Numerisch . "Kontinuierlich" . Format ( "Beste" . 10 )) .
Säule ( "c0000010" . Numerisch . "Kontinuierlich" . Format ( "Beste" . 10 )) .
Säule ( "X" . Numerisch . "Kontinuierlich" . Format ( "Beste" . 10 )) .
Säule ( "Y" . Numerisch . "Kontinuierlich" . Format ( "Beste" . 10 )) .
Säule ( "c0000013" . Charakter . "Nominal" ) .
Säule ( "c0000014" . Charakter . "Nominal" )
) .
Importeinstellungen(
Zeilenende (CRLF . CR . LF) .
Ende des Feldes (Komma . CSV ( 0 )) .
Zitate streichen ( 1 ) .
Verwenden Sie Apostrophe als Anführungszeichen ( 0 ) .
Ganze Datei scannen ( 1 ) .
Leere Spalten als numerisch behandeln ( 0 ) .
CompressNumericColumns ( 0 ) .
CompressCharacterColumns ( 0 ) .
CompressAllowListCheck ( 0 ) .
Etiketten ( 0 ) .
Spaltennamen Start ( 1 ) .
Datenbeginn ( 1 ) .
Zeilen zum Lesen ( "Alles" ) .
Jahresregel ( "20xx" )
)
) ;
// Sie können die unbenannten Spalten in der Tabelle auswählen und löschen. Es handelt sich um Zensus-bezogene Details, die meiner Meinung nach nicht wirklich benötigt werden. Wenn Sie das finden, lassen Sie es mich wissen.
Wie bereits erwähnt, habe ich nicht die entsprechende Übung durchgeführt, um alle korrekten Spaltennamen für alle Spalten in dieser Datei zu erhalten, da ich nicht die zensusbezogenen Attribute benötigte, sondern nur die Postleitzahl, die Stadt und das X / Y Koordinaten entsprechend Längen- und Breitengrad. Wenn Sie Zugriff auf SAS haben, können Sie ein Skript ausführen, um die Datei in SAS zu importieren, um alle Spaltennamen anzuzeigen, und dieses Skript so anpassen, dass alle generischen Spalten c000003, c000004 usw. richtig benannt werden habe SAS, bitte füge hier einen Kommentar hinzu und ich gehe zurück, um diese Arbeit abzuschließen.
Nachdem Sie das Skript ausgeführt haben, um die Tabelle zu generieren und zu speichern, können Sie das X und Y in die Drop-Zones im Diagramm-Generator ziehen, um die Positionen der Postleitzahlen anzuzeigen. Sie sind so dicht, dass sie die Form des Landes weitgehend zeigen!

Die importierte Tabelle besteht aus ~ 16,6 M Zeilen und 14 Spalten. Mein letzter Tisch war immer noch ein halber Gig, als ich mich auf die 5 Säulen beschränkte, die ich brauchte.
Als Nächstes müssen Sie diese Tabelle mit Ihrer vorhandenen JMP-Tabelle mit 9-stelligen Reißverschlüssen verknüpfen. Ein wichtiger Faktor ist, zu bestimmen, ob Ihr Postleitzahlformat mit dem Format der importierten Tabelle übereinstimmt, die die fünfstellige Postleitzahl und die vierstellige Erweiterung in separaten Spalten hat. Wenn Ihre Datentabelle dies auch tut, sollten Sie gut damit umgehen können Tabellen> Verbinden Wählen Sie zum Verbinden der beiden Tabellen Nach übereinstimmenden Spalten und zum Auswählen der beiden Spalten die richtigen Spalten aus.
Wenn Sie jedoch eine Spalte im Format XXXXX-XXXX benötigen, da dies das Format Ihrer Datentabelle ist, das die Postleitzahlen enthält, können Sie Folgendes für die soeben importierte Tabelle ausführen.
- Klicken Sie mit der rechten Maustaste auf die leere Spalte rechts von der Tabelle und wählen Sie Neue Spalten…
- Benennen Sie in dem sich öffnenden Dialog die neue Spalte ZIP CODE und unter der Spalteneigenschaften Pulldown, wählen Sie Formel . Dies öffnet den Formeleditor von JMP.
- Klicken Sie in der Spaltenauswahl unter dem Pulldown-Menü Tabellenspalten auf ZIP, und wählen Sie dann aus Charakter in der Spaltenauswahlbox unter dem Abschnitt Funktionen und wählen Sie Concat aus der Popup-Liste. Geben Sie in das sich öffnende leere Feld "-" ein.
- Klicken Zeichen> Concat Wählen Sie erneut und mit dem neuen leeren Feld die Spalte Zip + 4 aus dem Tabellenspaltenauswahlfeld.
- Sie sollten eine Formel wie diese sehen:

Wenn Ihre Formel so aussieht wie oben, klicken Sie im Formeleditor auf OK und im Spaltendialog erneut auf OK. Dies sollte Ihrer Tabelle eine neue Spalte namens ZIP CODE hinzufügen, die Reißverschlüsse im Format 00601-2103 enthält. Sie können dann mit Ihrer ursprünglichen Datentabelle verbinden, die Reißverschlüsse in diesem Format enthält.
Die ersten beiden Zeilen in der CSV-Datei scheinen beim Import ein bisschen durcheinander zu sein, aber ich bin mir nicht sicher, warum, es sei denn, die Probleme waren in der ursprünglichen CSV-Datei vorhanden. Sie sind leicht zu reparieren.
Ich hoffe, dass diese Informationen für jemand anderen hilfreich sein können, der 9-stellige Postleitzahldaten benötigt. Wieder ist es nicht die aktuellste Version dieser Daten, aber für einige Anwendungen kann dies ausreichend sein. Wenn Sie einen besseren Fuzzy-Abgleich von Adress- oder Postleitzahldaten benötigen und Zugriff auf SAS haben, können Sie auch PROC GEOCODE ausprobieren.
PS: Ich bin sicher, dass es bessere Möglichkeiten gibt, dies über Scripting und SAS-Integration zu erreichen. Wenn ich jedoch einem Kunden helfen möchte, der kein Scripter ist und keinen Zugriff auf SAS hat, musste ich eine JMP-basierte und weitgehend interaktive Route finden .
jeff.perkinson