<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Recientemente, un cliente me preguntó cómo obtener una tabla de códigos postales de 9 dígitos con valores de latitud y longitud que podrían importarse a JMP para fusionarlos con una tabla de datos JMP existente que contenía códigos postales de 9 dígitos. Esta pregunta era nueva para mí, y alguien más me sugirió que quizás SAS PROC GEOCODE sería útil. Sin embargo, sabía que el cliente no era un programador de SAS, así que esperaba encontrar un camino feliz que no incluyera la necesidad de aprender a programar en SAS.
Primero verifiqué el complemento JMP Geocoder, pero parecía que solo geocodificaba al nivel zip de 5 dígitos. El cliente ya tenía esas ubicaciones X / Y lat / lon pero necesitaba algo más granular, de ahí el deseo de las cremalleras de 9 dígitos. Yo siguiente investigó PROC GEOCODE y resultó que el proceso requería dos tablas: su tabla de datos y una tabla con las cremalleras de 9 dígitos vinculadas a los valores de latitud y longitud. Pero ya tenía los códigos postales que necesitaba: si pudiera encontrar la tabla de índice, parecía que no necesitaría el procedimiento para unirse a las tablas, aunque sí ofrecía una coincidencia aproximada que una combinación directa no.
Me registré con el soporte técnico de SAS y dijeron que la tabla de datos que tienen, que incluye los archivos zip de 9 dígitos, se encuentra en un enlace en esta página debajo de la Zip + 4 sección de geocodificación. Y Necesitas un ID de perfil SAS para descargar el archivo zip, que ya tienes si estás leyendo esto y eres miembro de la comunidad JMP. En cualquier caso, es gratis configurar un perfil SAS. El archivo es a partir de 2006, por lo que está fuera de fecha, pero una aparentemente, la versión actual de los datos TIGER no incluye datos zip + 4. La siguiente sección en la página menciona una fuente de pago (Melissa Data) que proporciona más información actual y la mantiene actualizada por una tarifa.
Una vez que descargue el archivo zip, puede ver que contiene un archivo readme, un archivo CSV (ZIP4.CSV) y un programa SAS. Pensé que importaría el CSV directamente en JMP en ese momento, pero aquí es donde encuentro el problema # 1: ¡el archivo CSV carecía de encabezados de columna! Regresé al programa SAS e importé los datos que lo utilizaban, y se agregaron los encabezados de las columnas para poder ver qué eran. Sin embargo, el programa que agregó nombres de columna también pareció reordenar las columnas, por lo que se convirtió en un juego similar para determinar qué columnas en el CSV coincidían con las columnas nombradas en la tabla de SAS.
Ahora volví a JMP para extraer el archivo SAS importado que contiene los encabezados de las columnas, y aquí es donde me encontré con el problema # 2. Algunas de las cremalleras de 5 dígitos comenzaron con "00" o "0" y la columna se trataba como datos numéricos cuando se importaba de CSV a JMP, por lo que los primeros 0 se eliminaban de las cremalleras al importar. Revisé las Propiedades de la Columna y había un formato Z5 SAS establecido en la columna, pero hablé con Xan al respecto y confirmó que JMP no entendía ese formato de código postal.
Si bien podría haber corregido esto con una columna de fórmula condicional después del hecho, cambiando la columna a carácter y agregando 0, 1 o 2 ceros según la longitud de cada zip, sugirió que la solución más rápida podría ser volver a importar el CSV. archivo que utiliza el modo Vista previa de importación de texto de JMP, que me permitiría cambiar el tipo de columna a carácter y cambiar el nombre de las columnas que necesitaba antes de importar. Abrí mi archivo SAS y determiné los nombres de encabezado de columna solo para las columnas que necesitaba y así lo hice.
Para importar el archivo ZIP4.CSV usted mismo, deberá hacer clic en Archivo> Nueva Script en JMP, luego pegue el texto a continuación en una ventana de script. Coloque el cursor al comienzo de la primera línea y haga clic en el botón Ejecutar script en la barra de herramientas. Puede desplazarse para encontrar ese botón con información sobre herramientas, o bien haga clic con el botón derecho en la ventana del script y elija Ejecutar script. Como se indica a continuación, deberá señalar la ruta correcta en su máquina hacia el archivo que descargó y descomprimió del sitio web de soporte de SAS vinculado anteriormente.
Nombres predeterminados aquí ( 1 ) ;
// Reemplace la ruta a continuación con la ruta al archivo CSV guardado en su máquina
zipdata = Abierto (
"C: \ \ ZIP4.csv" ,
columnas
Columna ( "CREMALLERA" , Personaje , "Nominal" ) ,
Columna ( "ZIP + 4" , Personaje , "Nominal" ) ,
Columna ( "c000003" , Personaje , "Nominal" ) ,
Columna ( "Ciudad" , Personaje , "Nominal" ) ,
Columna ( "c000005" , Personaje , "Nominal" ) ,
Columna ( "c000006" , Personaje , "Nominal" ) ,
Columna ( "c000007" , Personaje , "Nominal" ) ,
Columna ( "c000008" , Numérico , "Continuo" , Formato ( "Mejor" , 10 )) ,
Columna ( "c000009" , Numérico , "Continuo" , Formato ( "Mejor" , 10 )) ,
Columna ( "c0000010" , Numérico , "Continuo" , Formato ( "Mejor" , 10 )) ,
Columna ( "X" , Numérico , "Continuo" , Formato ( "Mejor" , 10 )) ,
Columna ( "Y" , Numérico , "Continuo" , Formato ( "Mejor" , 10 )) ,
Columna ( "c0000013" , Personaje , "Nominal" ) ,
Columna ( "c0000014" , Personaje , "Nominal" )
) ,
Importar ajustes(
Fin de Línea (CRLF) , CR , LF) ,
Fin de campo (coma , CSV ( 0 )) ,
Cotizaciones de la tira ( 1 ) ,
Utilice Apostrophe como comilla ( 0 ) ,
Escanear todo el archivo ( 1 ) ,
Trate las columnas vacías como numéricas ( 0 ) ,
CompressNumericColumns ( 0 ) ,
CompressCharacterColumns ( 0 ) ,
CompressAllowListCheck ( 0 ) ,
Etiquetas( 0 ) ,
Inicio de nombres de columna ( 1 ) ,
Inicios de datos ( 1 ) ,
Líneas para leer "Todos" ) ,
Regla del año ( "20xx" )
)
) ;
// Puede seleccionar y eliminar las columnas sin nombre en la tabla; son detalles relacionados con el Censo que no creo que realmente necesite. Si encuentras que lo haces, házmelo saber.
Como mencioné anteriormente, no hice el ejercicio de coincidencia para obtener todos los nombres de columna correctos para todas las columnas de este archivo porque no necesitaba los atributos relacionados con el censo, solo el código postal, la ciudad y X / Y Coordenadas correspondientes a latitud y longitud. Si tiene acceso a SAS, puede ejecutar un script para importar el archivo a SAS para ver todos los nombres de columna y modificar este script para nombrar correctamente todas las columnas genéricas c000003, c000004, etc., o si las necesita y no las necesita. tenga SAS, agregue un comentario aquí y volveré para completar ese trabajo.
Después de ejecutar el script para generar la tabla y guardarla, puede arrastrar las X y Y a las zonas de arrastre en el generador de gráficos para ver las ubicaciones de los códigos postales. ¡Son tan densos que en gran medida muestran la forma del país!

La tabla importada es de ~ 16.6 M filas y 14 columnas. Mi mesa final aún tenía medio concierto cuando estaba recortada a solo las 5 columnas que necesitaba.
A continuación, deberá unirse a esta tabla con su tabla JMP existente que contiene cremalleras de 9 dígitos. Un factor importante es determinar si su formato de código postal coincide con el formato de la tabla importada, que tiene el código postal de 5 dígitos y la extensión de 4 dígitos en columnas separadas. Si su tabla de datos también lo hace, entonces debería ser bueno para hacer Tablas> Unirse , eligiendo unir las dos tablas, Coincidiendo con las columnas, y eligiendo las columnas correctas para hacer coincidir ambas columnas.
Sin embargo, si necesita una columna en el formato XXXXX-XXXX porque ese es el formato en el que su tabla de datos tiene los códigos postales, puede hacer lo siguiente en la tabla que acaba de importar.
- Haga clic derecho en la columna en blanco a la derecha de la tabla y elija Nuevas columnas ...
- En el cuadro de diálogo que aparece, nombre la nueva columna CÓDIGO POSTAL, y debajo de Propiedades de la columna desplegable, elija Fórmula . Esto abre el editor de fórmulas de JMP.
- Haga clic en ZIP en el selector de columnas debajo del menú desplegable Columnas de la tabla, luego elija Personaje en el cuadro de selección de columna bajo la sección Funciones y elija Concat de la lista emergente. Escriba '-' en el cuadro vacío que se abre.
- Hacer clic Personaje> Concat de nuevo, y con el nuevo cuadro en blanco seleccionado, elija la columna Zip + 4 del cuadro de selección de la columna de la tabla.
- Deberías ver una fórmula como esta:

Una vez que su fórmula se parece a la anterior, haga clic en Aceptar en el editor de fórmulas y vuelva a hacer clic en Aceptar en el cuadro de diálogo de la columna. Eso debería agregar una nueva columna a su tabla llamada CÓDIGO ZIP que contiene cremalleras en el formato 00601-2103. Luego puede unirse con su tabla de datos original que contiene cremalleras en ese formato.
Las primeras dos filas en el archivo CSV parecen haberse desordenado un poco en la importación, pero no estoy seguro de por qué a menos que existieran los problemas en el archivo CSV original. Se arreglan fácilmente.
Espero que esta información pueda ser útil para alguien que necesite datos de código postal de 9 dígitos. Una vez más, no es la versión más reciente de estos datos que existe, pero podría ser suficiente para algunas aplicaciones. Si necesita una mejor coincidencia aproximada de los datos de la dirección o el código postal, y tiene acceso a SAS, también puede revisar PROC GEOCODE.
PD: estoy seguro de que hay mejores formas de hacerlo a través de las secuencias de comandos y la integración de SAS, pero al ayudar a un cliente que no es un script y no tiene acceso a SAS, tuve que encontrar una ruta solo JMP y en gran parte interactiva .
jeff.perkinson