例: DATAステップでのBYグループの処理

例: 単一のBY変数を使用したオブザベーションのグループ化

コード例

次の例は、DATAステップで単一のBY変数zipCodeを使用してデータをグループ化する方法を示しています。入力データセットzipには、通り名、市、州、ZIPコードが含まれます。グループは、BYステートメントで変数zipCodeを指定することによって作成されます。DATAステップでは、同じ値を持つZIPコードをグループに整理します。

data zip;
input zipCode State $ City $ Street $20-29;
datalines;
85730 AZ Tucson    Domenic Ln
85730 AZ Tucson    Gleeson Pl
33133 FL Miami     Rice St	
33133 FL Miami     Thomas Ave
33133 FL Miami     Surrey Dr
33133 FL Miami     Trade Ave
33146 FL Miami     Nervia St
33146 FL Miami     Corsica St
33801 FL Lakeland  French Ave
33809 FL Lakeland  Egret Dr
; 

proc sort data=zip; 
   by zipCode; 
run;

data zip; 
   set zip;
   by zipCode;
run;

proc print data=zip noobs; 
   title 'BY-Group Uing a Single Variable: ZipCode'; 
run;

この図は、作成された5つのBYグループを示しています。

単一のBY変数(ZipCode)を使用したBYグループ
単一のBY変数(ZipCode)を使用したBYグループ

要点

  • SORTプロシジャは、データセット内のオブザベーションの物理的な順序を変更します。OUT=オプションを使用すると、別の名前で新しい並べ替えられたデータセットを作成できます。ただし、この例では、zipデータセットを置き換えます。
  • 最初のBYグループには、BY変数StateおよびCityの最小値を持つすべてのオブザベーションが含まれます。2番目のBYグループには、BY変数の次に小さい値を持つすべてのオブザベーションが含まれ、以下同様に続きます。

関連項目

例: 複数のBY変数を使用したオブザベーションのグループ化

コード例

次の例は、StateとCityの2つのBY変数を含むzipデータセットを処理した結果を示しています。

data zip;
input State $ City $ Street $13-22 ZipCode ;
datalines;
FL Miami    Nervia St  33146
FL Miami    Rice St    33133
FL Miami    Corsica St 33146
FL Miami    Thomas Ave 33133
FL Miami    Surrey Dr  33133
FL Miami    Trade Ave  33133
FL Lakeland French Ave 33801
FL Lakeland Egret Dr   33809
AZ Tucson   Domenic Ln 85730
AZ Tucson   Gleeson Pl 85730
;


proc sort data=zip; 
   by State City; 
run;

data zip; 
   set zip; 
   by State City;
run;
proc print data=zip noobs; 
   title 'BY Groups with Multiple BY Variables: State City'; 
run;

この図には3つのBYグループが示されています。データセットは、読みやすいように左側に出力されたBY変数StateとCityとともに示されています。オブザベーション内のBY変数の位置は、値のグループ化と順序付けの方法には影響しません。

オブザベーションは、アリゾナのオブザベーションが最初に出現するように配置されます。Stateの各値内のオブザベーションは、Cityの値の順に配置されます。各BYグループには、変数StateとCityの値の一意の組み合わせがあります。たとえば、最初のBYグループのBY値はAZ Tucson、2番目のBYグループのBY値はFL Lakelandになります。

複数のBY変数(StateとCity)を持つBYグループ
複数のBY変数を持つBYグループ

要点

  • SORTプロシジャは、データセット内のオブザベーションの物理的な順序を変更します。OUT=オプションを使用すると、別の名前で新しい並べ替えられたデータセットを作成できます。ただし、この例では、zipデータセットを置き換えます。
  • 最初のBYグループには、BY変数zipCodeの最小値を持つすべてのオブザベーションが含まれます。2番目のBYグループには、BY変数の次に小さい値を持つすべてのオブザベーションが含まれ、以下同様に続きます。

関連項目

例: GROUPFORMATと出力形式を使用したBYグループの処理

コード例

この例では、FORMATプロシジャ、GROUPFORMATオプション、およびFORMATステートメントを使用して、単純なデータセットを作成および出力します。入力TESTデータセットは昇順の値で並べ替えられます。NEWTESTデータセットは、変数Scoreのフォーマット値によって配置されます。

options
linesize=80 pagesize=60;     

data test;
   input name $ Score;
datalines;
Jon     1
Anthony 3
Miguel  3
Joseph  4
Ian     5
Jan     6
;
proc format;
   value Range 1-2='Low'
               3-4='Medium' 
               5-6='High';
run;     

data newtest; 
   set test;   
   by groupformat Score; 
   format Score Range.;    
run;  

proc print data=newtest;    
   title 'Score Categories';    
   var Name Score;    
   by Score;    
run;
BYステートメントGROUPFORMATオプションを使用したSAS出力
BYステートメントGROUPFORMATオプションを使用したSAS出力

要点

  • GROUPFORMATオプションを使用したDATAステップでのBYグループ処理は、SASプロシジャでのフォーマット値を使用したBYグループ処理と同じです。GROUPFORMATオプションの使用は、グループ化されたデータを表示するための独自の出力形式を定義する場合に便利です。
  • DATAステップでGROUPFORMATオプションを使用すると、データセットの作成に使用するBYグループが、グループ化され、フォーマットされたデータをレポートするPROCステップのBYグループと確実に一致します。GROUPFORMATは、FIRST.variableとLAST.variableの割り当て方法も決定します。

関連項目

最終更新: 2026年9月14日