<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />최근에 고객이 9 자리 우편 번호가 포함 된 기존 JMP 데이터 테이블과 병합하기 위해 JMP로 가져올 수있는 위도 및 경도 값이있는 9 자리 우편 번호 테이블을 얻는 방법에 대해 질문했습니다. 이 질문은 나에게 처음 접했고 다른 사람들로부터 SAS PROC GEOCODE가 도움이 될 것이라는 제안이있었습니다. 그러나 고객이 SAS 프로그래머가 아니라는 것을 알고 있었기 때문에 SAS에서 프로그래밍하는 방법을 배우지 않아도되는 행복한 길을 찾고 싶었습니다.
먼저 JMP 지오 코더 추가 기능을 확인했지만 지오 코드 만 5 자리 우편 수준으로 보였다. 고객은 이미 해당 X / Y 위도 / 경도 위치를 가졌으나보다 세분화 된 항목이 필요하므로 9 자리 zip에 대한 열망이 필요합니다. 나는 다음에 PROC GEOCODE를 조사한 결과, proc에는 위도와 경도 값에 연결된 9 자리 zip이있는 테이블과 데이터 테이블이 필요하다는 것이 밝혀졌습니다. 하지만 필자는 필자가 필요로하는 우편 번호를 이미 가지고있었습니다. 인덱스 테이블을 찾을 수만 있다면, 테이블에 조인 할 필요가없는 것 같았습니다.
SAS 기술 지원팀에 확인한 결과 9 자리 zip 파일이 포함 된 데이터 테이블은 이 페이지 아래에 Zip + 4 지오 코딩 섹션. 와이 o이 파일을 읽고 JMP 커뮤니티의 회원 인 경우 이미 가지고있는 zip 파일을 다운로드하려면 SAS 프로필 ID가 필요합니다. 어쨌든 SAS 프로파일을 자유롭게 설정할 수 있습니다. 파일은 2006 년부터, 그래서 그것은 오래되었지만, 분명히 현재 버전의 TIGER 데이터에는 zip + 4 데이터가 포함되어 있지 않습니다. 페이지의 다음 섹션에는 최신 정보를 제공하고 유료로 업데이트 된 유료 소스 (Melissa Data)가 언급되어 있습니다.
zip 파일을 다운로드하면 readme 파일, CSV 파일 (ZIP4.CSV) 및 SAS 프로그램이 있다는 것을 알 수 있습니다. 나는 그 시점에서 CSV를 JMP로 곧바로 가져올 것이라고 생각 했었지만, 이것이 내가 snag # 1을 맞았던 곳이다 : CSV 파일에 컬럼 헤더가 없다! SAS 프로그램으로 돌아가 데이터를 가져 왔고 열 머리글이 추가되어 그 정보를 볼 수있었습니다. 그러나 열 이름을 추가 한 프로그램도 열의 순서를 바꾸는 것처럼 보였으므로 CSV에서 SAS 테이블의 명명 된 열과 일치하는 열을 결정하기위한 일치하는 게임이되었습니다.
이제는 JMP로 돌아가서 열 머리글이 들어있는 가져온 SAS 파일을 가져 왔으며 여기가 # 2 번 걸린 곳입니다. 일부 5 자리 우편 번호는 "00"또는 "0"으로 시작했으며 CSV에서 JMP로 가져올 때 열이 숫자 데이터로 취급되기 때문에 가져 오는 즉시 선행 0이 zip에서 삭제되었습니다. 열 속성을 확인하고 열에 Z5 SAS 형식이 설정되어 있지만 Xan과 관련하여 JMP에서 현재 해당 우편 번호 형식을 이해하지 못했음을 확인했습니다.
컬럼을 문자로 변경하고 각 zip의 길이를 기준으로 0, 1 또는 2 제로를 추가하여 조건부 수식 열을 사용하여이 문제를 해결할 수 있지만 그는 가장 빠른 솔루션은 CSV를 다시 가져 오는 것일 수 있다고 제안했습니다. JMP의 텍스트 가져 오기 미리보기 모드를 사용하면 열 유형을 문자로 변경하고 가져 오기 전에 필요한 열의 이름을 바꿀 수 있습니다. SAS 파일을 열고 필자가 필요로하는 컬럼의 컬럼 헤더 이름을 결정하고 그렇게했습니다.
ZIP4.CSV 파일을 직접 가져 오려면 cllick해야합니다. 파일> 새 스크립트 JMP에서 아래 텍스트를 스크립트 창에 붙여 넣으십시오. 첫 번째 줄의 시작 부분에 커서를 놓고 도구 모음에서 스크립트 실행 버튼을 클릭하십시오. 마우스를 가져 가면 툴팁으로 해당 버튼을 찾거나 스크립트 창을 마우스 오른쪽 버튼으로 클릭하고 스크립트 실행을 선택할 수 있습니다. 아래에 명시된 바와 같이, 기계의 올바른 경로가 위에서 링크 된 SAS 지원 웹 사이트에서 다운로드 및 압축 해제 된 파일을 가리 키도록해야합니다.
기본 이름은 여기에있다. ( 1 ) ;
// 아래 경로를 컴퓨터에 저장된 CSV 파일의 경로로 바꿉니다.
우편 번호 = 열다 (
"C : \ <사용자 폴더 위치> \ ZIP4.csv" ,
열 (
기둥 ( "지퍼" , 캐릭터 , "명사 같은" ) ,
기둥 ( "ZIP + 4" , 캐릭터 , "명사 같은" ) ,
기둥 ( "c000003" , 캐릭터 , "명사 같은" ) ,
기둥 ( "시티" , 캐릭터 , "명사 같은" ) ,
기둥 ( "c000005" , 캐릭터 , "명사 같은" ) ,
기둥 ( "c000006" , 캐릭터 , "명사 같은" ) ,
기둥 ( "c000007" , 캐릭터 , "명사 같은" ) ,
기둥 ( "c000008" , 숫자 , "마디 없는" , 체재 ( "베스트" , 10 )) ,
기둥 ( "c000009" , 숫자 , "마디 없는" , 체재 ( "베스트" , 10 )) ,
기둥 ( "c0000010" , 숫자 , "마디 없는" , 체재 ( "베스트" , 10 )) ,
기둥 ( "엑스" , 숫자 , "마디 없는" , 체재 ( "베스트" , 10 )) ,
기둥 ( "와이" , 숫자 , "마디 없는" , 체재 ( "베스트" , 10 )) ,
기둥 ( "c0000013" , 캐릭터 , "명사 같은" ) ,
기둥 ( "c0000014" , 캐릭터 , "명사 같은" )
) ,
설정 가져 오기 (
라인 끝 (CRLF , CR , LF) ,
필드 끝 (쉼표 , CSV ( 0 )) ,
스트립 인용문 ( 1 ) ,
따옴표로 아포스트로피 사용 ( 0 ) ,
전체 파일 검색 ( 1 ) ,
빈 열을 숫자로 처리하십시오 ( 0 ) ,
CompressNumericColumns ( 0 ) ,
CompressCharacterColumns ( 0 ) ,
CompressAllowListCheck ( 0 ) ,
레이블 ( 0 ) ,
열 이름 시작 ( 1 ) ,
데이터 시작 ( 1 ) ,
읽을 줄 ( "모든" ) ,
연도 규칙 ( "20xx" )
)
) ;
// 테이블에서 명명되지 않은 열을 선택하고 삭제할 수 있습니다. 실제로 필요하지 않은 센서스 관련 세부 정보입니다. 네가 찾으면 나에게 알려줘.
위에서 언급했듯이 인구 조사와 관련된 속성, 우편 번호, 도시 및 X / Y가 필요 없기 때문에이 파일의 모든 열에 대해 올바른 열 이름을 얻기 위해 일치하는 연습을하지 않았습니다. 위도와 경도에 해당하는 좌표입니다. SAS에 액세스 할 수있는 경우 스크립트를 실행하여 파일을 SAS로 가져 와서 모든 열 이름을보고이 스크립트를 조정하여 모든 일반 c000003, c000004 등 열 이름을 올바르게 지정하거나 필요하지 않은 경우 SAS가 있으시면 여기에 의견을 추가하십시오. 그 작업을 완료하기 위해 다시 돌아가겠습니다.
테이블을 생성하고 저장하기 위해 스크립트를 실행 한 후에는 X와 Y를 그래프 빌더의 놓기 영역으로 끌어서 우편 번호의 위치를 볼 수 있습니다. 그들은 국가의 모양을 크게 나타 내기 위해 매우 조밀합니다!

가져온 테이블은 ~ 16.6 M 행 14 열입니다. 나의 최종 테이블은 내가 필요로하는 단지 5 개의 열로 줄 였을 때 여전히 반 공연이었다.
다음으로이 테이블을 9 자리 zip이 들어있는 기존 JMP 테이블과 조인해야합니다. 한 가지 중요한 요소는 우편 번호 형식이 가져온 테이블 형식과 일치하는지 확인하는 것입니다.이 형식은 5 자리 우편 번호와 4 자리 숫자 확장자가 별도의 열에 있습니다. 데이터 테이블에도 문제가 없으면 수행해야합니다. 테이블> 가입 , 두 테이블 조인을 선택하고, [열 일치]로 두 열을 일치시킬 오른쪽 열을 선택합니다.
그러나 XXXXX-XXXX 형식의 열이 필요하면 데이터 테이블에 우편 번호가있는 형식이므로 방금 가져온 테이블에 대해 다음을 수행 할 수 있습니다.
- 테이블 오른쪽에있는 빈 칸을 마우스 오른쪽 버튼으로 클릭하고 새 열 ...
- 대화 상자가 나타나면 새 열의 이름을 ZIP CODE로 지정하고 열 속성 풀다운, 선택 공식 . 그러면 JMP의 수식 편집기가 열립니다.
- 표 열 풀다운 아래의 항목 선택 도구에서 ZIP을 클릭 한 다음 캐릭터 함수 섹션 아래의 열 선택 상자에서 콩 카트 팝업 목록에서. 열리는 빈 상자에 '-'을 입력하십시오.
- 딸깍 하는 소리 캐릭터> 콩 케트 다시 새 빈 상자를 선택한 상태에서 테이블 열 선택 상자에서 Zip + 4 열을 선택하십시오.
- 다음과 같은 수식이 표시되어야합니다.

수식이 위의 것과 같으면 수식 편집기에서 확인을 클릭하고 열 대화 상자에서 다시 확인을 클릭합니다. 그러면 테이블에 z1 코드가 포함 된 새로운 열이 추가되어야합니다. 우편 번호는 00601-2103 형식으로되어 있습니다. 그런 다음 해당 형식의 zip이 포함 된 원본 데이터 테이블에 가입 할 수 있습니다.
CSV 파일의 처음 두 행은 가져 오기에서 다소 엉망이 된 것 같지만 원래 CSV 파일에 문제가없는 한 이유는 확실하지 않습니다. 그들은 쉽게 고칠 수 있습니다.
이 정보가 9 자리 우편 번호 데이터가 필요한 다른 사용자에게 도움이되기를 바랍니다. 다시 말하지만, 존재하는이 데이터의 최신 버전은 아니지만 일부 응용 프로그램에는 충분할 수 있습니다. 주소 나 우편 번호 데이터를 더 잘 일치 시키려면 SAS에 액세스해야하며 PROC GEOCODE도 체크 아웃 할 수 있습니다.
PS 스크립팅과 SAS 통합을 통해 더 나은 방법이 있다는 것이 확실하지만 스크립터가 아니고 SAS에 액세스 할 수없는 고객을 도울 때 JMP만의 대화 형 경로를 찾아야했습니다 .
제프. 퍼킨슨