2017-12-07 8 views
0

私は、11000,30129,11111,30999などの多くの数字を持つSASの変数を持っています。これを最初の2桁でグループ化したいので、 "11000と11111"と "30129と30999 "は独自のテーブルになります。一番桁のSASグループ

答えて

1

それはあなたが第二のカラムを作成し、最初の2桁を抽出する必要があり、

非常に簡単です。

次に、この2番目の列でデータセットをソートします。

val_a  a 
11  11000 
11  11111 
30  30129 
30  309999 

そして、あなたは、このようなval_aに選択して2データセットを作成することができます:

data test; 
infile datalines dsd ; 
    input a : 15. ; 
    datalines; 
11000, 
30129, 
11111, 
309999, 
; 
run; 

data test_a; 
length val_a $2; 
set test; 
val_a= SUBSTRN(a,1,2); 
run; 

proc sort data=test_a out=test_b; 
by val_a; 
run; 

結果は次のようになります、私は私がやったと思う、

data want data_11 data_30; 
set test_b; 
if val_a = 11 then output data_11; 
if val_a = 30 then output data_30; 
run; 

よろしく

+0

私はトムの答えを編集した - charater変数として定義する必要がありますval_a(長さ文を参照してください)あなたのコメントについて – vasja

+0

感謝Vasjaを。不思議なこと、形式val_a 15 ;;完璧に働いています。私はval_aがなぜキャラクターである必要があるのか​​分かりません。ちなみに私の答えの解決策の質問:) – Thogerar

0

をあなたのようですが、私の新しいコラムは「。」だけで表示されます。しかし、私はあなたの答えは私にとにかくいくつかの助けを与えることができると思う、ありがとう!

data books; 
 

 
infile "&path\Boken.csv" dlm=';' missover dsd firstobs=2; 
 

 
\t input ISBN: $12. 
 
\t \t \t Book: $quote150.; 
 

 

 
run; 
 

 
data test_a; 
 
format val_ISBN 15.; 
 
set books; 
 
val_ISBN= SUBSTRN(ISBN,1,2); 
 
run; 
 

 
proc sort data=test_a out=test_b; 
 
by val_ISBN; 
 
run; 
 

 

 
proc print data=test_b (obs=10) noobs ; 
 
run;

+0

方法を忘れないでくださいstackoverflowでありがとう:)(正しい私の答えをチェックしてください)https://meta.stackexchange.com/questions/5234/how-does-アンサーワーク – Thogerar

関連する問題