2

私からの別のSASの質問(私はこれらがそれほど頻繁にここに出てこないことに気づきました...):

私はこのようなものを含むデータセットを持っています:

Name  |  Category  |   Level  |  Score
John  |    cat1    |     1    |    80
John  |    cat1    |     2    |    70
John  |    cat1    |     3    |    10
John  |    cat2    |     1    |    60
John  |    cat2    |     2    |    95
John  |    cat2    |     3    |    43
John  |    cat2    |     4    |    28

そして、出力(Excel形式)は次のようになります。

      |    cat1      |    cat2       |
name  | 1  |  2  | 3 | 1 | 2 | 3 | 4 | 
John  | 80 | 70  |10 |60 |95 |43 |28 |

私が今しているproc transposeことは、正しい順序でデータを取得してproc exportから.xlsに移動するために使用しています。

これは、1つのことを除いて、正常に機能します。サブディビジョンの第2層を機能させることができません。したがって、今のところ、proc transposeデータセット内のカテゴリとレベルを実際に連結して(たとえば、「1_cat1」にする)、この値に転置して、次の出力を取得します。

name  | 1_cat1 |  2_cat1 | 3_cat1 | 1_cat2 | 2_cat2 | 3_cat2 | 4_cat2 | 
John  |   80   |    70   |   10   |   60   |   95   |   43   |   28   |

最初の目的の出力を取得する方法はありますか?

4

2 に答える 2

3

Excelに取り込むためのオプションに精通していると仮定するとODS(私はhtmlを怠惰に使用して.xlsとして保存していますが、代わりにタグセットなどを使用できます)、PROC REPORTこれはデータを形式で表示するためのソリューションです。あなたが探しています。acrossprocレポートの変数の使用を確認してください。出力のcat1で使用されていない列を抑制する方法はおそらくありますが、今は思い出せません。

データtestData;
  infile datalines dsd delimiter ='|';
  入力名$カテゴリ$レベルスコア;
  データライン;
ジョン| cat1 | 1 | 80
ジョン| cat1 | 2 | 70
ジョン| cat1 | 3 | 10
ジョン| cat2 | 1 | 60
ジョン| cat2 | 2 | 95
ジョン| cat2 | 3 | 43
ジョン| cat2 | 4 | 28
;
走る;

ods html file = "C:\ SomePath \ MyFile.xls";

procレポート
  data = testData;
  列名category、level、score;
  名前/グループを定義します。
  カテゴリを定義する/全体'';
  レベルを定義する/全体'';
  スコア/合計を定義する'';
走る;

ods html close;
于 2011-05-06T04:47:09.180 に答える
1

各カテゴリを複数のレベルにまたがらせることを検討しているため、proctransposeを使用して目的の出力に直接移動することはできないと思います。他の2つの手順、REPORTとTABULATEを調べたいと思うかもしれません。どちらからでも直接できると思いますが、使ってから何年も経ちました。3番目のオプションは、ODSを使用してXMLファイルを作成することです。このファイルでは、出力の表示方法をほぼ正確に制御できますが、これを行う方法を学ぶにはもう少し手間がかかります。

于 2011-05-05T21:22:48.297 に答える