<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />最近、顧客は、9桁の郵便番号を含む既存のJMPデータテーブルとマージするためにJMPにインポートできる緯度と経度の値を含む9桁の郵便番号のテーブルを取得する方法について私に尋ねました。この質問は私にとっては初めてのことで、おそらくSAS PROC GEOCODEが役立つと思われるという提案を他の誰かから受けました。しかし、私は顧客がSASプログラマーではないことを知っていたので、私はSASでプログラムする方法を学ぶ必要がない幸せな道を見つけることを望んでいました。
私は最初にJMP Geocoderアドインをチェックアウトしましたが、それは5桁のzipレベルまでのGeocodeにしか思えませんでした。顧客はすでにそれらのX / Y緯度/経度の場所を持っていましたが、よりきめ細かい何かを必要としていました、それで9桁のジップの欲求。私は次に PROC GEOCODEを調査したところ、procは2つのテーブル、つまりデータテーブルと9桁のジップが緯度と経度の値にリンクされたテーブルを必要とすることがわかりました。しかし、必要な郵便番号はすでに持っています。インデックステーブルを見つけることができれば、テーブルを結合するのにprocは必要ないと思われます。ただし、ストレート結合では実現できないあいまい一致を示しました。
私はSAS技術サポートにチェックインしました、そして彼らは彼らが持っているそれが持っているそれが持っているデータテーブルが9桁のzipファイルを含んでいる上でリンクで見つけられると言いましたこのページの下に Zip + 4ジオコーディングセクション Y zipファイルをダウンロードするには、SASプロファイルIDが必要です。これを読んでいてJMPコミュニティのメンバーであれば、すでに持っています。いずれにせよ、SASプロファイルを自由に設定できます。ファイルは 2006年から、それは時代遅れですが、明らかに、現在のバージョンのTIGERデータにはzip + 4データが含まれていません。このページの次のセクションでは、より最新の情報を提供し、有料で最新情報を提供する有料のソース(Melissa Data)について説明します。
zipファイルをダウンロードすると、そのファイルにreadmeファイル、CSVファイル(ZIP4.CSV)、およびSASプログラムが含まれていることがわかります。その時点でCSVをJMPに直接インポートすることを考えていましたが、ここで問題1が発生しました。CSVファイルに列ヘッダーがありませんでした。私はSASプログラムに戻ってそれを使ってデータをインポートし、そして列ヘッダが追加されたのでそれらが何であるかを見ることができた。ただし、列名を追加したプログラムも列の順序を変更するように見えたため、CSVのどの列がSASテーブルの名前付き列と一致するかを判断するのは、少しマッチングゲームになりました。
今度は、列ヘッダーを含むインポート済みSASファイルを取り込むためにJMPに戻りましたが、ここがsnag#2に遭遇した場所です。5桁の数字の一部は「00」または「0」で始まり、CSVからJMPにインポートされると列は数値データとして扱われていたため、インポート時に先頭の0は数字から削除されていました。Column Propertiesをチェックし、Z5 SASフォーマットが設定されていたのですが、それについてXanと話したところ、JMPは現在その郵便番号フォーマットを理解できていないことを確認しました。
列を文字に変更し、各zipの長さに基づいて0、1、または2個のゼロを追加することで、事後に条件式列でこれを修正できたかもしれませんが、彼は最速の解決策はCSVを再インポートすることです。JMPのテキストインポートプレビューモードを使用してファイルを作成すると、列の種類を文字に変更し、インポート前に必要な列の名前を変更することができます。私は自分のSASファイルを開き、私が必要としているカラムだけのカラムヘッダ名を決め、それを実行しました。
自分でZIP4.CSVファイルをインポートするには、クリックする必要があります。ファイル>新規スクリプト JMPで、次に下のテキストをスクリプトウィンドウに貼り付けます。最初の行の先頭にカーソルを置き、ツールバーの「スクリプトの実行」ボタンをクリックしてください。 ツールチップを使ってそのボタンを見つけるか、スクリプトウィンドウ内を右クリックして[スクリプトの実行]を選択します。下記のように、あなたはあなたがダウンロードして上にリンクされたSASサポートウェブサイトから解凍されたファイルへあなたのマシン上の正しいパスを指す必要があります。
ここにデフォルトの名前 ( 1 ) ;
//下記のパスをあなたのマシンに保存されているCSVファイルへのパスに置き換えてください
zipdata = 開いた (
"C:\ <あなたのフォルダの場所> \ ZIP4.csv" 、
列(
カラム ( 「ZIP」 、キャラクター 、 「公称」 ) 、
カラム ( "ZIP + 4" 、キャラクター 、 「公称」 ) 、
カラム ( "c000003" 、キャラクター 、 「公称」 ) 、
カラム ( "シティ" 、キャラクター 、 「公称」 ) 、
カラム ( "c000005" 、キャラクター 、 「公称」 ) 、
カラム ( "c000006" 、キャラクター 、 「公称」 ) 、
カラム ( "c000007" 、キャラクター 、 「公称」 ) 、
カラム ( "c000008" 、数値 、 「連続」 、フォーマット ( "ベスト" 、 10年 )) 、
カラム ( "c000009" 、数値 、 「連続」 、フォーマット ( "ベスト" 、 10年 )) 、
カラム ( "c0000010" 、数値 、 「連続」 、フォーマット ( "ベスト" 、 10年 )) 、
カラム ( "バツ" 、数値 、 「連続」 、フォーマット ( "ベスト" 、 10年 )) 、
カラム ( "Y" 、数値 、 「連続」 、フォーマット ( "ベスト" 、 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桁のジップを含む既存のJMP表と結合する必要があります。1つの重要な要素は、郵便番号の形式がインポートされたテーブルの形式(5桁の郵便番号と4桁の拡張子が別々の列にある)と一致するかどうかを判断することです。あなたのデータテーブルもそうであれば、あなたはやり続けるのが良いはずです。テーブル>結合 2つのテーブルを結合することで、[列を一致させる]を選択し、正しい列を選択して両方の列を一致させます。
ただし、XXXXX-XXXXの形式の列が必要な場合は、データ表に郵便番号が含まれている形式であるため、インポートした表に対して次の操作を実行できます。
- テーブルの右側にある空白の列を右クリックして、新しい列…
- ポップアップするダイアログで、新しい列にZIP CODEと名前を付け、その下に列のプロパティプルダウン、選択式 。これでJMPの式エディタが開きます。
- [Table Columns]プルダウンの下の列選択で[ZIP]をクリックし、次に選択します。キャラクター機能セクションの列選択ボックスで、 Concat ポップアップリストから。 開いた空のボックスに「 - 」と入力します。
- クリックキャラクター>コンカットもう一度、新しい空白のボックスを選択した状態で、テーブルの列選択ボックスからZip + 4列を選択します。
- 次のような式が表示されるはずです。

数式が上記のようになったら、数式エディタで[OK]をクリックし、列ダイアログでもう一度[OK]をクリックします。 それは、00601-2103のフォーマットのジップを含むZIP CODEと呼ばれるあなたのテーブルに新しい列を追加するはずです。その後、その形式のzipを含む元のデータテーブルと結合できます。
CSVファイルの最初の2行がインポートで少しめちゃくちゃになったようですが、問題が元のCSVファイルに存在しない限り、理由がわかりません。簡単に修正できます。
この情報が、9桁の郵便番号データを必要とする他の人に役立つことを願っています。 繰り返しますが、このデータの最新版ではありませんが、アプリケーションによっては十分な場合があります。住所や郵便番号データのあいまいな照合が必要で、SASにアクセスできる場合は、PROC GEOCODEもチェックアウトできます。
PSスクリプト作成とSASの統合を介してこれを行うにはもっと良い方法があると確信していますが、スクリプト作成者ではなく、SASにアクセスできない顧客を支援するとき。
jeff.perkinson