0

2 つの変数aとを持つ次のテスト データ セットを考えてみましょうb

data test;
infile 'C:\Users\Public\test.dat';
input a b;
run;

proc print data=test;
run;

このコードを実行すると、目的のデータ セットが得られます。ただし、変数を追加すると、より多くの数値が得られます。これらの数字はどこから来たのですか?

data test;
infile 'C:\Users\Public\test.dat';
input a b c d;
run;

proc print data=test;
run;
4

1 に答える 1

2

あなたが(おそらく)見ているのは、FLOWOVERファイルまたはデータラインから入力するためのデフォルトのSAS修飾子(infileステートメントまたはステートメントのオプションfilename)の効果です。

SAS が行の終わりに到達したとき、つまり EOL 文字を読み取ったときにさらに入力が必要な場合、SAS ができることはいくつかあります。

  • 次の行に移動して、さらに入力を取得できます
  • 読み取りを停止し、現在の変数を欠落に設定し、それ以降のすべての変数を設定できます
  • 読み取りを停止し、現在の変数の使用可能な入力を保持し、他のすべての変数を不足に設定することができます
  • 読み取りを停止し、エラーをスローして、制御をユーザーに返すことができます。

これらは、、、、FLOWOVERおよびオプションです。 これは主に、行の長さの制限 (パンチカードが使用されていたときはカード列の後ろに 80 列) があり、SAS が互換性を壊すことを嫌うため、複数の行にデータを持つことが一般的だったためです。MISSOVERTRUNCOVERSTOPOVERFLOWOVER

したがって、おそらく最初のコード セットと 2 番目のコード セットの間で見られるのは、最初のコード セットで、(たとえば) 100 行 x 2 列が表示されます。2 番目のファイルでは、50 行 x 4 列で、最初のファイルの偶数番号の列が新しいファイルの 3 列目と 4 列目になります。

于 2013-10-28T16:12:34.780 に答える