Combinar condados estatales con regionesKansas tiene 105 condados que se combinan en 16 regiones de preparación para la salud. ¿Cómo puedo hacer esto usando US-County-Name.jmp y el archivo XY asociado?
Las 16 regiones de Kansas se definen en el siguiente enlace: https://www.kdhe.ks.gov/ArchiveCenter/ViewFile/Item/1246
Cualquier ayuda sería apreciada.
GráficosRe: Combinar condados estatales con regionesAlguien puede tener una manera más fácil, pero he hecho cosas como esta y sé que funcionará aunque requiera un poco de esfuerzo.Primero, descargaría la tabla de regiones que vinculaste y luego separaría los condados usando la coma como delimitador (generalmente uso Excel para esta etapa, aunque se puede hacer en JMP).Luego, reestructuraría esa tabla apilando los condados para que haya 2 columnas, una con la región y la otra mostrando los condados asociados con cada región (pero como una sola columna).Luego, puede asegurarse de que el archivo US-County-Name.jmp tenga el mismo formato para los nombres de los condados que el archivo que creó (como agregar la palabra "County" al nombre del condado; asegúrese de que coincida exactamente con la forma en que los nombres de los condados se ven en el archivo del mapa).Luego asigne la función de mapa a la columna Condado que ha creado, vinculándola al archivo US-County-Name.jmp usando la columna con el nombre correcto en ese archivo.Dado que su nuevo archivo tendrá una columna para Region, puede usarla en Graph Builder para superponer o colorear las regiones en el mapa.
Sé que esto requiere mucha mano de obra, pero es la única forma en que lo he hecho en el pasado.
Re: Combinar condados estatales con regionesHola @jkeighley ,
A continuación, tengo un código que necesita depuración, pero debería ser un lugar sólido para comenzar. ¿Algún otro programador que pueda mejorar el siguiente script?¡Estoy seguro de que hay muchas mejoras necesarias!
- Abre US-County-Name.jmp & p representantes para buscar más tarde, separando el estado y el condado en nuevas columnas
- Descarga y abre el PDF que vinculó anteriormente, luego importa la tabla en la primera página
- Nota: ¡siempre revise el script antes de ejecutarlo en su máquina local! Este script descarga un PDF de Internet.Verifique la línea 15, la cadena de URL en el argumento URL()
- Asigna crea una matriz asociativa (AA) de regiones (claves) y condados (valores) dentro de la región <-- el bucle no funciona
- Soy un principiante en las expresiones regulares, por lo que la expresión regular está rota
- La lista de condados vuelve como una sola cadena, que se supone que regex debe separar
- Ejemplo de cadena del condado: "Barton, McPherson, Pawnee, Rice, Saline, Stafford"
- Debe ser una lista de cadenas: { "Barton", "McPherson", "Pawnee", "Rice", "Saline", "Stafford" }
- En US-County-Name.jmp...
- Utiliza algunos bucles anidados para encontrar filas donde State = KS y otras condiciones
- Cuando una fila donde State = KS, mire el país, luego encuentre a qué región corresponde buscando a través del AA y luego asignando la región (clave) al condado (valor) asignado
- Guarda la Región (clave) en la columna Región de la fila
names default to here(1);
clear log();
/* This block opens & readies US-County-Name.jmp */
countylist = open( "C:/Program Files/SAS/JMP/17/Maps/US-County-Name.jmp" );
countylist << New column( "County", formula( Word( 1, :Full Name Short, " " ) ) );
countylist << New column( "Region", Character );
countylist << New column( "State", formula( Word( -1, :Full Name Short, " " ) ) );
/* This block DOWNLOADS & opens the downloaded PDF & imports first page table */
request = New HTTP Request(
URL(
"https://www.kdhe.ks.gov/ArchiveCenter/ViewFile/Item/1246"
),
Method( "Get" )
);
file = request << Download( "$TEMP/Kansas Health Preparedness Regions.pdf", "replace", "show_progress" );
dt = Open( file,
PDF Tables(
Table(
table name(
"Kansas Health Preparedness Regions and Map Page(1) Table(1)"
),
add rows( page( 1 ), Rect( 0.4789, 1.0156, 10.5211, 7.8894 ) )
)
)
);
// For some reason, dt imports as a 1 item list of data tables
// Reassigns dt to a "Table" data type for further processing
dt = dt[1];
// Deletes empty rows in imported PDF table
dt << Select where( Is Missing( :Region ) ) << Delete Rows;
// Starting AA for data storage
region = Associative array();
// Stores region / county list data in AA
for( i = 1, i <= N Rows( dt ), i++,
templist = {};
temphold = dt:Counties Included[i];
tempitems = N Items( words( dt:Counties Included[i], "," ) );
show(tempitems);
// Breaks apart country string into individual counties and adds them to templist
for( n = 1, n <= tempitems, n++,
iteration = eval( eval expr( expr( eval insert( "\^n^" ) ) ) );
// Fix me! This is broken
insert into( templist, regex( "^\!"(\w*),*\!"$", iteration ) );
);
// Save the list as the value pair (county list, list of strings) to the respective key
region[ dt:region[i] ] = templist
);
// The region & county list is now stored in an AA!
//print( region );
/* This block will use data in AA to assign region to respective county in US-County-Name.jmp */
for( k = 1, k <= N rows( countylist ), k++,
// Condition where state = Kansas
try( if( countylist:State[k] == "KS",
// Iterates through AA keys (regions)
for( m = 1, m <= N Items( kskeys ), m++,
// Creates list of counties within m region
tempvals = region[m];
// Checks if Count present, then assigns region to dt
if( contains( tempvals, countylist:County[k] ), // County is in m list
countylist:Region[k] = kskeys[m]
);
);
) ); // try --> if county not found in PDF stated counties, no region will be assigned
);
// Closes out pdf table, if needed
close( dt, "No Save" );
Re: Combinar condados estatales con regiones@jkeighley
Obtuve el siguiente script para actualizar con éxito las regiones en US-County-Name.jmp. Tenga en cuenta que el siguiente script no guarda este archivo ni modifica el archivo XY asociado.
names default to here(1);
clear log();
/* This block opens & readies US-County-Name.jmp */
countylist = open( "C:/Program Files/SAS/JMP/17/Maps/US-County-Name.jmp" );
countylist << New column( "County", formula( Word( 1, :Full Name Short, " " ) ) );
countylist << New column( "Region", Character );
countylist << New column( "State", formula( Word( -1, :Full Name Short, " " ) ) );
/* This block opens the downloaded PDF */
// Opens downloaded PDF & imports the first table
request = New HTTP Request(
URL(
"https://www.kdhe.ks.gov/ArchiveCenter/ViewFile/Item/1246"
),
Method( "Get" )
);
file = request << Download( "$TEMP/Kansas Health Preparedness Regions.pdf", "replace", "show_progress" );
dt = Open( file,
PDF Tables(
Table(
table name(
"Kansas Health Preparedness Regions and Map Page(1) Table(1)"
),
add rows( page( 1 ), Rect( 0.4789, 1.0156, 10.5211, 7.8894 ) )
)
)
);
// For some reason, if the below command doesn't re-assign dt to the data table,
// dt isn't the correct data type for the operation to continue
dt = dt[1];
// Deletes empty rows in imported PDF table
dt << Select where( Is Missing( :Region ) ) << Delete Rows;
// Starting AA for data storage
region = Associative array();
// Stores region / county list data in AA
for( i = 1, i <= N Rows( dt ), i++,
// Save the list as the value pair (county list, list of strings) to the respective key
region[ dt:region[i] ] = words( dt:Counties Included[i], ", " );
);
// The region & county list is now stored in an AA!
//print( region );
kskeys = region << Get keys;
/* This block will use data in AA to assign region to respective county in US-County-Name.jmp */
for( k = 1, k <= N rows( countylist ), k++,
// Condition where state = Kansas
try( if( countylist:State[k] == "KS",
// Iterates through AA keys (regions)
for( m = 1, m <= N Items( kskeys ), m++,
// Checks if Count present, then assigns region to dt
if( contains( region[ kskeys[m] ], countylist:County[k] ), // County is in m list
countylist:Region[k] = kskeys[m]
);
);
) ); // try --> if county not found in PDF stated counties, no region will be assigned
);
// Closes out pdf table, if needed
close( dt, "No Save" );