-1

次のコードを使用して、特定のデータを SAS データセットにインポートしようとしています。

データ Names_And_More;

Infile 'C:\Users\Admin\Desktop\Torrent Downloads\SAS 9.1.3 Portable\Names_and_More.txt';
Input Name   &  $20. 
      Phone  :  $20.  
      Height &  $10.  
      Mixed  &  $10.;
run;

ファイル内のデータは次のとおりです。

Roger Cody (908)782-1234 5ft. 10in. 50 1/8
Thomas Jefferson (315)848-8484 6ft. 1in. 23 1/2
Marco Polo (800)123-4567 5Ft. 6in. 40
Brian Watson (518)355-1766 5ft. 10in 89 3/4
Michael DeMarco (445)232-2233 6ft. 76 1/3

私は SAS を学ぼうとしてきましたが、Ron Cody の著書 Learning SAS by example を読んでいるうちに、上記の種類のデータをインポートすることがわかりました。アンパサンド (&) 入力形式修飾子を使用できます。アンパサンドは、コロンと同様に、提供された入力形式を使用するように指示しますが、区切り文字は 1 つではなく 2 つ以上の空白になっています。(私の言葉ではなく、ロンの言葉です)。ただし、これをインポートすると、結果 (データセット) は次のようになります。

                          Name            Phone      Height        Mixed

                  Roger Cody (908)782-    Thomas    Jefferson    Marco Polo

また、詳細については、SAS ログは次のとおりです。

419 データ Names_And_More; 420 Infile 'C:\Users\Admin\Desktop\Torrent Downloads\SAS 9.1.3 Portable\Names_and_More.txt'; 421 入力名 & $20. 422 電話 : 20 ドル。423 高さ & 10 ドル。424 ミックス & $10. 425 ;走る;

ノート:

infile 'C:\Users\Admin\Desktop\Torrent Downloads\SAS 9.1.3 Portable\Names_and_More.txt' は次のとおりです: File Name=C:\Users\Admin\Desktop\Torrent Downloads\SAS 9.1.3 Portable\Names_and_More. txt、RECFM=V、LRECL=256

ノート:

カードの紛失。Name=Brian Watson (518)35 Phone=Michael Height=DeMarco (4 Mixed= ERROR =1 N =2 注: infile から 5 つのレコードが読み取られました 'C:\Users\Admin\Desktop\Torrent Downloads\SAS 9.1.3 Portable\Names_and_More.txt'. The minimum record length was 37. The maximum record length was 47. NOTE: SAS は、INPUT ステートメントが行末に達したときに新しい行に移動しました. NOTE: データセット WORK.NAMES_AND_MORE には 1観察と 4 つの変数 注: DATA ステートメントを使用 (合計処理時間): リアルタイム 0.17 秒 CPU 時間 0.14 秒

私はこれに関する助けを探しています。正確に何が起こっているのか、何が間違っているのか、このエラーを修正する方法を誰かが説明できれば素晴らしいことです。

ありがとう

4

1 に答える 1

0

答えは、Ron Cody の本の説明にあります。& は、変数を区切るために 2 つのスペースが必要であることを意味します。そのため、名前 (および & を含むその他のフィールド) の後に 2 つ目のスペースが必要です。

違う:

Roger Cody (908)782-1234 5ft. 10in. 50 1/8

右:

Roger Cody  (908)782-1234 5ft. 10in.  50 1/8
于 2013-08-25T12:21:18.393 に答える