2016-12-15 7 views
-1

私には、村の名前、市場、教会、病院のデータセットがあります。市場、教会、病院には名前は直接与えられていません。むしろ、村に記載されているため、村名に直接リンクすることができます。座標は村によってのみリストされます。 SASのデータセットを再編成する必要があります。そのため、村のGPS座標はそれぞれの市場、教会、病院にリンクされています。SASデータの再編成 - ある列から別の列への情報のリンク

は、このデータセットを変換:新しく作成された市場の列と教会の座標で、このようなものに

Long |Lat |Village|Market |Church 
---------------------------------------- 
X(A) |Y(A) | A |A |A 
X(B) |Y(B) | B |B |B 
X(C) |Y(C) | C |A |A 
X(D) |Y(D) | D |A |D 
X(E) |Y(E) | E |B |B 
X(F) |Y(F) | F |F |F 
X(G) |Y(G) | G |F |F 
X(H) |Y(H) | H |H |F 

(ベース

は、ここで私は何をしようとしているため、より良い視覚化です元の村の座標のオフ):

Long|Lat |Village|Market|Market_Long|Market_Lat |Church|Church_Long|Church_Lat 
------------------------------------------------------------------------------- 
X(A)|Y(A) |A  |A  |X(A)  |Y(A)  |A  |X(A)  |Y(A) 
X(B)|Y(B) |B  |B  |X(B)  |Y(B)  |B  |X(B)  |Y(B) 
X(C)|Y(C) |C  |A  |X(A)  |Y(A)  |A  |X(A)  |Y(A) 
X(D)|Y(D) |D  |A  |X(A)  |Y(A)  |D  |X(D)  |Y(D) 
X(E)|Y(E) |E  |B  |X(B)  |Y(B)  |B  |X(B)  |Y(B) 
X(F)|Y(F) |F  |F  |X(F)  |Y(F)  |F  |X(F)  |Y(F) 
X(G)|Y(G) |G  |F  |X(F)  |Y(F)  |F  |X(F)  |Y(F) 
X(H)|Y(H) |H  |H  |X(H)  |Y(H)  |F  |X(F)  |Y(F) 

私はフォーマットがここで少し奇妙である知っているので、ここではこれらのサンプル]タブの画像のカップルですレ:

オリジナル表:

目的のテーブル:あなたはこの上で当てることができます任意の光のための

ありがとう!

+0

テキストではなく画像などのデータを含めます。テストするソリューションを試したい人は、手動でデータを入力する必要があります。 – Reeza

+0

投稿された新しいCHURCH_LONGは、既存のLONG列の単なるコピーです。もしそれがあなたが望むだけなら、問題は簡単です。そうでない場合は、必要なものを説明する良い例を投稿してください。 – Tom

答えて

0

コメントは、変数を新しい変数として定義するだけの簡単な方法です。とにかく新しい変数を定義しようとしているので、lengthステートメントを使用して、それらをデータセットに表示する順序を設定できます。

data old; 

input lon $ lat $ village $ market $ church $ hosp $; 
Datalines; 
X(A) Y(A) A A A B 
X(B) Y(B) B B B B 
X(C) Y(C) C A A D 
X(D) Y(D) D A D D 
X(E) Y(E) E B B B 
; 
run; 


data new; 

length lon lat village market market_lon market_lat Church church_lon church_lat 
     hosp hosp_lon hosp_lat $ 100; 

set old; 

market_lon = lon; 
market_lat = lat; 
church_lon = lon; 
church_lat = lat; 
hosp_lon = lon; 
hosp_lat = lat; 

run; 

これは、単純なケースのために動作しますが、ただ、市場、教会とHOSPよりも多くの変数がある場合は、ループはvarnamesのリストを反復処理しないマクロと%を使用しての代わりに興味がある可能性があり新しい変数を手動で定義します。

マクロ%のための素晴らしい記事を行いますhttp://blogs.sas.com/content/sastraining/2015/01/30/sas-authors-tip-getting-the-macro-language-to-perform-a-do-loop-over-a-list-of-values/

+0

これが不明な場合は申し訳ありません。問題は、座標は村にのみ提供されることです。特定の村の人々は市場、教会、病院に行くことができます。つまり、村A、C、Dの人々はすべて村Aの市場に行きます。 市場、教会、病院はすべてリンクしています市場、教会、病院を正しい座標に結びつけることができます。しかし、ある村の居住者が別の村の市場を訪問する可能性があるため、座標は連続して同じではありません。 – LZ48

関連する問題