È possibile fare in modo che JMP riconosca un valore e inserisca un nuovo valoreMi chiedo se qualcuno possa aiutarmi a capire uno script JMP per questo o un modo automatizzato per farlo.
Dispongo di una serie di codici postali che desidero che JMP riconosca e che compili una nuova colonna con il codice a livello di contea corrispondente. Non sono sicuro di come descriverlo al meglio o se c'è un termine per questo. Immagino di volere che JMP invii i codici postali "crosswalk" e li converta in codici a livello di contea.
Ad esempio, in un file, ho questi codici postali come dati:
| 08106 |
| 08107 |
| 08108 |
| 08109 |
| 08110 |
| 08110 |
| 08201 |
| 08202 |
| 08203 |
| 08213 |
| 08214 |
| 08215 |
| 08215 |
| 08217 |
| 08218 |
| 08219 |
Desidero che JMP esamini ogni codice postale e produca in una nuova colonna il codice della contea corrispondente. In un file separato, ho i corrispondenti codici di avviamento postale -> contea.
| 08110 | 34007 |
| 08201 | 34001 |
| 08202 | 34009 |
| 08203 | 34001 |
| 08204 | 34009 |
| 08205 | 34001 |
| 08210 | 34009 |
Oltre a farlo manualmente a mano, dove cercherò ogni codice postale per scoprire qual è il codice della contea, esiste un modo automatizzato per farlo?
Grazie per l'aiuto!
Oggetto: è possibile fare in modo che JMP riconosca un valore e inserisca un nuovo valoreUsa un array associativo per creare la tabella di ricerca, qualcosa di simile (segue codice non testato, dtZtoC è la tua tabella di informazioni da zip a contea)
lookup = associativearray();
for( i = 1, i <= nrows(dtZtoC), i += 1,
lookup[ dtZtoC:zip[i] ] = dtZtoC:county[i];
);
quindi utilizzare un ciclo o una formula di colonna per creare la nuova colonna (non testata ... ecco come potrebbe apparire la formula di colonna per la contea)
lookup[zip]
La formula della colonna dipende dalla tabella di ricerca che non sarà disponibile in seguito, quindi rimuovi la formula dalla colonna quando hai finito. Oppure, usa un ciclo, qualcosa di simile, senza una formula di colonna (non testato ...)
for( i = 1, i <= nrows(dtData), i += 1,
dtData:county[i] = lookup[dtData:zip[i]];
);
modificare: Geocodifica inversa Lat-Lon in Zip utilizza un join virtuale; anche un join virtuale potrebbe essere una buona scelta. Il join virtuale aggiunge complessità per ottenere flessibilità; se una corrispondenza da zip a contea cambia, aggiorna la tabella dtZtoC e la tabella dtData ottiene automaticamente la modifica. Ma ora hai due tabelle necessarie.
Oggetto: è possibile fare in modo che JMP riconosca un valore e inserisca un nuovo valoreEcco come sarebbe con un join virtuale (punta e clicca, nessun jsl richiesto)
i valori delle chiavi d'oro devono essere univoci nella colonna
La colonna della contea [zip] è nascosta per impostazione predefinita, l'ho mostrata nell'immagine. Funziona meglio con le tabelle già salvate e potrebbe essere necessario aprire la tabella con la chiave d'oro prima della tabella con la chiave blu (saprai se la chiave è in grigio).
modifica: potresti voler mantenere i codici come dati dei caratteri, ho appena notato che gli zeri iniziali sono spariti!
Oggetto: è possibile fare in modo che JMP riconosca un valore e inserisca un nuovo valoreCiao @SeaAardvark ,
Non ho capito se hai le due colonne corrispondenti in un'altra tabella. In tal caso, utilizzerei le tabelle unite o aggiornate una volta e quindi lo script.
Se hai i dati sulla mappa (nessuna tabella di corrispondenza delle chiavi) c'è anche una soluzione per questo. In passato, stavamo discutendo di un aggiornamento delle tabelle basato sulla posizione:
https://community.jmp.com/t5/Discussions/join-tables-based-on-location/mp/14827/highlight/true#M13786
facci sapere se aiuta,
Ron