Fassen Sie Landkreise zu Regionen zusammenKansas hat 105 Bezirke, die in 16 Gesundheitsbereitschaftsregionen zusammengefasst sind. Wie kann ich dies mit der US-County-Name.jmp und der zugehörigen XY-Datei tun?
Die 16 Regionen für Kansas sind unter folgendem Link definiert: https://www.kdhe.ks.gov/ArchiveCenter/ViewFile/Item/1246
Jede Hilfe wäre willkommen.
GrafikBetreff: Staatsbezirke zu Regionen zusammenfassenJemand mag einen einfacheren Weg haben, aber ich habe solche Dinge getan und weiß, dass es funktionieren wird, obwohl es einige Mühe erfordert.Zuerst würde ich die von Ihnen verlinkte Regionstabelle herunterladen und dann die Landkreise mit dem Komma als Trennzeichen trennen (ich verwende normalerweise Excel für diese Phase, obwohl dies in JMP möglich ist).Dann würde ich diese Tabelle neu strukturieren, indem ich die Landkreise so stapele, dass es zwei Spalten gibt, eine mit der Region und die andere mit den Landkreisen, die jeder Region zugeordnet sind (jedoch als einzelne Spalte).Dann können Sie sicherstellen, dass die Datei „US-County-Name.jmp“ das gleiche Format für die County-Namen hat wie die von Ihnen erstellte Datei (z Landkreisnamen finden Sie in der Kartendatei).Weisen Sie dann die Kartenrolle der von Ihnen erstellten Spalte County zu und verknüpfen Sie sie mit der Datei US-County-Name.jmp, indem Sie die korrekt benannte Spalte in dieser Datei verwenden.Da Ihre neue Datei eine Spalte für die Region enthält, können Sie diese im Graph Builder verwenden, um die Regionen auf der Karte zu überlagern oder einzufärben.
Ich weiß, dass dies arbeitsintensiv ist, aber es ist die einzige Möglichkeit, die ich in der Vergangenheit getan habe.
Betreff: Staatsbezirke zu Regionen zusammenfassenHallo @jkeighley ,
Unten habe ich Code, der etwas debuggt werden muss, aber ein solider Ausgangspunkt sein sollte. Irgendwelche anderen Skripter, die das folgende Skript verbessern könnten?Ich bin sicher, es gibt viel Verbesserungsbedarf!
- Öffnet US-County-Name.jmp & p Wiederholungen für die spätere Suche, indem Sie Staat und Landkreis in neue Spalten aufteilen
- Lädt die oben verlinkte PDF-Datei herunter und öffnet sie und importiert dann die Tabelle auf der ersten Seite
- Hinweis - Überprüfen Sie das Skript immer, bevor Sie es auf Ihrem lokalen Computer ausführen! Dieses Skript lädt ein PDF aus dem Internet herunter.Überprüfen Sie Zeile 15, den URL-String im URL()-Argument
- Assigns erstellt ein assoziatives Array (AA) von Regionen (Schlüsseln) und Landkreisen (Werten) innerhalb der Region <-- Schleife funktioniert nicht
- Ich bin ein Anfang bei regulären Ausdrücken, also ist der Regex-Ausdruck kaputt
- Die Liste der Landkreise kommt als einzelne Zeichenfolge zurück, die Regex auseinanderbrechen soll
- County-String-Beispiel: „Barton, McPherson, Pawnee, Rice, Saline, Stafford“
- Muss eine Liste von Zeichenfolgen sein: { "Barton", "McPherson", "Pawnee", "Rice", "Saline", "Stafford" }
- In US-County-Name.jmp...
- Verwendet einige verschachtelte Schleifen, um Zeilen zu finden, in denen State = KS und andere Bedingungen sind
- Wenn eine Zeile mit Staat = KS, Land ansieht, dann findet, welcher Region es entspricht, indem das AA durchsucht und dann die Region (Schlüssel) dem Landkreis (Wert) zugewiesen wird
- Speichert die Region (Schlüssel) in der Spalte „Region“ der Zeile
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" );
Betreff: Staatsbezirke zu Regionen zusammenfassen@jkeighley
Ich habe das folgende Skript erhalten, um die Regionen erfolgreich zu aktualisieren US-County-Name.jmp. Beachten Sie, dass das folgende Skript diese Datei nicht speichert oder die zugehörige XY-Datei ändert.
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" );