2016-06-13 53 views
1

私は50のワークシートAB0〜AB49を持つExcelファイルを持っています。各ワークシートは14の列で構成され、すべてのシートで列名が同じです。各シートの最初の列は、シート1の1から50までの数から異なります。各シートには18262行があります。私はSASですべてのシートを一緒に読んでそれを印刷する必要があります。私は第5,9,10欄で説明的な統計を行う必要があります。グラフの形でも同様にオカレンス分布を描く必要があります。SAS 9.4で複数のシートでExcelファイルを読む

proc import DATAFILE = " C:\Personal\Data_2016\data_new.xlsx" 
      OUT = data 
      DBMS = xlsx 
      REPLACE; 
    SHEET = "AB0" 
    GETNAMES = Yes; 
run; 

proc univariate; 
run; 

このコードでは、基本的な統計的対策、ロケーションのテストを行っています。 Mu = 0、Quantiles、Extreme Observationsは14列すべての出力として表示されます。ここでは、列5,9,10の場合のみ、50枚すべての出力をまとめて(18262(1枚のシートで)* 50の各列に)表示します。

+0

ループまたは呼び出しを使用して各ファイルを読み込み、スタックしてから説明的な統計を実行しようとしましたか? – superfluous

+0

@superfluousあなたは私にいくつかの例を教えてもらえますか?私はそれを試みたことはありません。私はSASが初めてです。 – Sam

+0

一般に、セル名になることができるシート名は避ける必要があります。Excelファイルを処理する際にエラーが発生することがあります。列の開始が変化する場合は、インポートしたデータを再度確認してください。 – Reeza

答えて

0

あなたは私たちはあなたに多くの助けになることができますしたいものをまとめた統計により詳細な情報を提供しますが、インポートは十分に単純である場合:

%macro import_loop; 
    %do i = 0 %to 49; 
     proc import datafile = "C:\Personal\Data_2016\data_new.xlsx" 
      out = import_sheet&i. 
      dbms = xlsx replace; 
      getnames = yes; 
      sheet = "Sheet&i."; 
     run; 
    %end; 
%mend import_loop; 

%import_loop; 

data stack; 
    set import_sheet:; 
run; 
あなたはすべての50個のデータセットが積み重ねられてきた今

とで動作する準備ができて。

+0

上記のコードを実行すると、エラー22-7が表示されます無効なオプション名XX(0-49) – Sam

+0

また別のエラー:データセットリスト(WORK.import_sheet :)にメンバーが含まれていません。 – Sam

+0

これは、ループが機能しなかったためです。今すぐ試してください。本当に、トムの方法ははるかに洗練されています。それと一緒に行く。 – superfluous

6

これらを1つのデータセットにまとめることができます。 PROC IMPORTを使用する代わりに、XLSX libnameエンジンを使用します。

libname in xlsx 'C:\Personal\Data_2016\data_new.xlsx' ; 
data all_data; 
    set in.AB0 - in.AB49 ; 
run; 

SAS/Access to PCファイルのライセンスが必要です。しかし、Microsoft WindowsまたはExcelソフトウェアは必要ありません。

+0

これは分かっていませんでした! – superfluous

+0

SAS PCFILES SERVERサービスがインストールされている状態で、PCFILESへのSAS/ACCESSがある場合にのみ有効です。 –

+1

SAS 9.4を使用している場合、PCFILESサーバは必要ありません。 – Tom

関連する問題