2016-12-19 9 views
-4

私は非常に大量のデータセットを持っています。&カテゴリ変数&これを連続してそれぞれ&に分ける必要があります。データのSASのデータセットを分割する

例:

AgeBand Name Price 

    20-30 A 200  
    30-40 B 300  
    40-50 C 400  
    50-60 D 100 

私は2つのデータセットを持つようにしたい:ageband &名 2.Price を1.Comrising は、いずれかが助けることができますか?

+0

サンプルデータを追加できますか?変数に関するより多くの情報?つまり、それらはすべて数字であり、カテゴリ変数はすべての文字などです。 –

+0

AgeBand 10-20,20-30,30-40,40-50、支払額-20,30,40,50、タイプA、B、C、 D – user6016731

+0

質問にデータを含めて再現性があることをお勧めします。また、どの変数を分離したいのかはっきりしていません –

答えて

-1

proc contentsを使用して、変数の種類を特定します。この方法であなたが望む特定の変数を入力する必要はありません。

proc contents data = sashelp.class noprint out=names(keep=name type); run; 

proc sql noprint; 
    select name 
    into: cont_vars separated by " " 
    from names 
    where type = 1; 

    select name 
    into: cat_vars separated by " " 
    from names 
    where type = 2; 
quit; 

%put &cont_vars.; 
%put &cat_vars.; 

data cont_vars(keep=&cont_vars.) cat_vars(keep=&cat_vars.); 
    set sashelp.class; 
run; 
+0

したがって、数値のカテゴリ変数があるとどうなりますか?これに対処するための唯一の確実な方法は、@Joeの回答に詳しく書かれています。 – Longfish

+0

良い質問ですが、私はそれを性格ではない文字として読んでいます。 – Foxer

1

これを管理するための適切な方法は、おそらくExcelのファイル(またはいくつかの他の形式になり、データ・ディクショナリを持つことです、またはネイティブのSAS)を使用して、変数名とそのタイプを格納します。

次に、変数を分割するために、このデータ辞書から変数リストを作成することができます。

そして、あなたはExcelが"c:\mydata\data_dictionary.xlsx"ファイル持って想像:あなたはもちろんの両方のデータセットに(つまり、何でも)あなたのID変数を保つことを確認する必要があり

proc import file="c:\mydata\data_dictionary.xlsx" 
      out=datadict dbms=xlsx replace; *or dbms=excel or excelcs depending on your installation and version; 
    sheet="datadict_sheet"; 
run; 


proc sql; 
    select colname 
    into :cat_var_list separated by ' ' 
    from datadict 
    where coltype = 'Categorical' 
    ; 
    select colname 
    into :cont_var_list separated by ' ' 
    from datadict 
    where coltype = 'Continuous' 
    ; 
quit; 

data cat_vars(keep=&cat_var_list. idvar) cont_vars(keep=&cont_var_list. idvar); 
    set yourdata; 
run; 

関連する問題