Ist es möglich, dass JMP einen Wert erkennt und einen neuen Wert eingibt?Ich frage mich, ob mir jemand helfen könnte, ein JMP-Skript dafür oder eine automatisierte Methode dafür zu finden.
Ich habe eine Reihe von Postleitzahlen, die JMP erkennen und eine neue Spalte mit der entsprechenden Vorwahl auf Kreisebene ausfüllen soll. Ich bin mir nicht sicher, wie ich das am besten beschreiben soll oder ob es einen Begriff dafür gibt. Ich denke, ich möchte, dass JMP Postleitzahlen "überquert" und sie in County-Code umwandelt.
Als Beispiel habe ich in einer Datei diese Postleitzahlen als Daten:
| 08106 |
| 08107 |
| 08108 |
| 08109 |
| 08110 |
| 08110 |
| 08201 |
| 08202 |
| 08203 |
| 08213 |
| 08214 |
| 08215 |
| 08215 |
| 08217 |
| 08218 |
| 08219 |
Ich möchte, dass JMP jede Postleitzahl durchsucht und in einer neuen Spalte die entsprechende Landesvorwahl erstellt. In einer separaten Datei habe ich die entsprechenden Postleitzahlen -> County Codes.
| 08110 | 34007 |
| 08201 | 34001 |
| 08202 | 34009 |
| 08203 | 34001 |
| 08204 | 34009 |
| 08205 | 34001 |
| 08210 | 34009 |
Gibt es eine automatisierte Möglichkeit, dies zu tun, außer dies manuell von Hand zu tun, wo ich jede Postleitzahl durchsuchen würde, um herauszufinden, wie die Landesvorwahl lautet?
Danke für Ihre Hilfe!
Betreff: Ist es möglich, dass JMP einen Wert erkennt und einen neuen Wert eingibt?Verwenden Sie ein assoziatives Array, um die Nachschlagetabelle zu erstellen, etwa (ungetesteter Code folgt, dtZtoC ist Ihre Tabelle mit Zip-to-County-Informationen).
lookup = associativearray();
for( i = 1, i <= nrows(dtZtoC), i += 1,
lookup[ dtZtoC:zip[i] ] = dtZtoC:county[i];
);
Verwenden Sie dann eine Schleife oder eine Spaltenformel, um die neue Spalte zu erstellen (ungetestet ... so könnte die Spaltenformel für County aussehen)
lookup[zip]
Die Spaltenformel hängt von der Nachschlagetabelle ab, die später nicht verfügbar sein wird. Entfernen Sie daher die Formel aus der Spalte, wenn Sie fertig sind. Oder verwenden Sie eine Schleife wie diese ohne Spaltenformel (ungetestet ...)
for( i = 1, i <= nrows(dtData), i += 1,
dtData:county[i] = lookup[dtData:zip[i]];
);
bearbeiten: Geocode Lat-Lon auf Zip umkehren verwendet einen virtuellen Join; Auch hier könnte ein virtueller Join eine gute Wahl sein. Die virtuelle Verknüpfung erhöht die Komplexität, um Flexibilität zu erhalten. Wenn sich eine Zip-to-County-Zuordnung ändert, aktualisieren Sie einfach die dtZtoC-Tabelle, und die dtData-Tabelle erhält die Änderung automatisch. Aber jetzt haben Sie zwei Tabellen, die benötigt werden.
Betreff: Ist es möglich, dass JMP einen Wert erkennt und einen neuen Wert eingibt?So würde es mit einem virtuellen Join aussehen (Zeigen und Klicken, kein JSL erforderlich)
Die Goldschlüsselwerte müssen in der Spalte eindeutig sein
Die County [zip] -Spalte ist standardmäßig ausgeblendet. Ich habe sie im Bild ausgeblendet. Dies funktioniert am besten mit den bereits gespeicherten Tabellen. Möglicherweise muss die Goldschlüsseltabelle vor der Blauschlüsseltabelle geöffnet werden (Sie wissen, ob der Schlüssel grau ist.)
bearbeiten - vielleicht möchten Sie die Codes als Zeichendaten behalten, ich habe gerade bemerkt, dass die führenden Nullen weg sind!
Betreff: Ist es möglich, dass JMP einen Wert erkennt und einen neuen Wert eingibt?Hallo @ SeaAardvark ,
Ich habe nicht verstanden, ob Sie die beiden übereinstimmenden Spalten in einer anderen Tabelle haben. Wenn ja, würde ich Tabellen verwenden, die einmal verbunden oder aktualisiert werden, und es dann skripten.
Wenn Sie die Daten auf der Karte haben (keine Schlüsselübereinstimmungstabelle), gibt es auch eine Lösung dafür. In der Vergangenheit haben wir eine standortbasierte Aktualisierung von Tabellen diskutiert:
https://community.jmp.com/t5/Discussions/join-tables-based-on-location/mp/14827/highlight/true#M13786
Lassen Sie uns wissen, ob es hilft,
Ron