0

SASでステートメントを使用してCSVドキュメントを読み込もうとしてfilenameいますが、ステートメントを使用して変数名を入力すると、Excelにはすでに変数名が最初の行として含まれているinputため、間違いが発生する可能性があります。どうすればこの状況に対処できますか?

filename outdata "C:\Users\Xiang\Desktop\crime2005.csv";

data crime;
    infile outdata dlm="," dsd ;
run;

proc means mean std maxdec=1 ;
run; 

proc print;
run; 
4

1 に答える 1

3

まず、「ファイル名ステートメントを介して」と言って、少し混乱しています。これはデータステップ経由です。ファイル名ステートメントは、たまたまこれの比較的小さなコンポーネントです。

次に、何が起こっているかを確認できるように、これを適切な SAS インデントに入れましょう。

filename outdata "C:\Users\Xiang\Desktop\crime2005.csv";

data crime;
 infile outdata dlm="," dsd ;
 input [your-variable-list];
run;

proc means data=crime mean std maxdec=1 ;
run;

proc print data=crime;
run; 

データ ステップと Proc は run で終了します (quit で終了する Proc を除く)。これらはそれぞれ別のステップであるため、常に実行を含めてください。派手なプログラミングのトリックを使用していない限り、常に data= を含めてください。'data' は常に最初の列にあり、インデントされていません。データ ステップは、ファイル名ではなくマスター ステートメントです。

これらにより、コードが読みやすくなり、間違いから保護されます。一人で作業する場合でも、読みやすいコードは重要です。それは、あなたが5年前、5年後に書いたことを理解することを意味します.

元の質問 - ヘッダー行からのエラーを回避するにはどうすればよいですか?

filename outdata "C:\Users\Xiang\Desktop\crime2005.csv";

data crime;
 infile outdata dlm="," dsd firstobs=2;
 input [your-variable-list];
run;

ほらね。FIRSTOBS=2 は、最初の行 (つまり、ヘッダー行) をスキップするよう SAS に指示します。

あなたが試すかもしれないことの1つは、PROC IMPORTです。DBMS=CSV を指定した PROC IMPORT は、非常に便利なことを行います。ファイルを自分で読み取るためのすべてのコードを含む完全なデータ ステップがログに記録されます。そのため、実稼働コードに PROC IMPORT を実際に推奨するわけではありませんが (特に、文字/数値の書式設定や長さに関して不適切な決定を下すことが多いため)、入力ステートメントを開始する方法を確認することは非常に役立ちます。

proc import file=outdata out=crime dbms=csv replace;
run;

次に、ログを見て、そのコードをコピーします (行番号を削除します)。これで、思いのままに変更できます。

于 2013-02-10T05:50:22.547 に答える