0

あなたは私を助けることができますか??

私はtxtファイルを持っています:

1 1 8 2 004 149 44.9 Brabant
14 7 7 9 9
32 10 13.5 165 20 7 21 19.9 7
1 1 9 2 004 133 32.5 Liege
12 7 6 11 8
14 18 20.9 140 22.9 18 15 4.4 5

最初の 3 行で同じ ID が分析され、分析された変数は次のとおりです。

anne, sex, nat, age, prov, tai, pds, ptr, pbi, pss, psi, pmo, dyn, efl, fp, 
slo, cna, flt, rsa, sbf, ll.

ファイルを SAS にロードして、行と列の名前を付けるにはどうすればよいですか?

どうもありがとうございました。エリサ

4

3 に答える 3

1

入力ファイルには、1 つの観測に対して 3 行のデータがあるようです。あなたが意図したと思うように、元の質問を再フォーマットしました。

そうであれば、次の行にスキップする演算子をINPUT使用して、1 つのステートメントで3 行すべてを読み取る必要があります。/つまり、これを試してください:

data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt';
    input ID
          anne sex nat $ age prov tai pds $ 
        / ptr pbi pss psi pmo 
        / dyn efl fp slo cna flt rsa sbf ll;
run;

もちろん、変数名がファイルと一致していること、および結果が必要なとおりであることを本当に確認する必要があります。簡単に始められるように、非常に基本的な例を示しました。

更新: 私の例は、投稿したサンプル データに基づいています。最初の列は ID 変数であると想定しました。それ以外の場合、サンプル データには例よりも多くの値が含まれていたためです。

あなたの場合の最善のアプローチは、INFORMATステートメントを使用して各変数の読み取り方法を定義することです。そのためには、各変数の型 (文字または数値) と、各文字変数の最大長を理解する必要があります。数値変数の場合は、入力形式のみを使用できますbest32.。文字変数の最大長がわからない場合は、 を使用してみてください$200.。これにより、各変数は 200 文字になります。

例えば:

data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt';

    /* Define the variables that will be read */
    informat 
    /* First line, 8 variables */
          anne  best32.
          sex   $1.
          nat   $4.
          age   best32.
          prov  best32.
          tai   best32.
          pds   best32.   
          ptr   $200.  /* 8th field in your sample, apparently character */

    /* Second line, 5 variables */
          pbi   best32.
          pss   best32.
          psi   best32.
          pmo   best32.
          dyn   best32.

    /* Third line, 9 variables */
          efl   best32.
          fp    best32.
          slo   best32.
          cna   best32.
          flt   best32.
          rsa   best32.
          sbf   best32.
          ll    best32.
         unkn   best32.;  /* an unknown variable I invented */

    /* Input the variables in the order they appear in the file.*/
    input anne sex nat age prov tai pds pdr 
        / pbi pss psi pmo dyn 
        / efl fp slo cna flt rsa sbf ll unkn;
run;

INFILEステートメントに DLM オプションは必要ないことに注意してください。また、この例では、提供されたサンプル データのすべてのデータが読み取られるわけではないことに注意してください。新しい変数を発明しました。

覚えておくべき重要なことは、ソース ファイルに表示される正しい順序で変数を読み取ることです。

于 2012-12-17T19:57:08.040 に答える
0
data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt' dlm=' ';
    input 
          anne 1-4  sex $6   nat $8  age 10 prov @$11-21 tai @23  pds @25
        / ptr 1-2 pbi 4 pss 6 psi 8 pmo 10
        /dyn 1-2 efl 4-5 fp 7-10 slo 12-14 cna 16-17 flt 19 rsa 21-22 sbf 24-27 ll 29;
run;
于 2012-12-18T17:00:33.593 に答える
0

問題は、場所名の言葉以上のものだったと思います。次の方法でこれを克服できます (最長の名前が 200 文字未満であると仮定します)。

data data2004; 
  infile 'C:\Users\acer\STAT2012\data2004.txt' truncover;
  input ID
    anne sex nat $ age prov tai pds $200.;
  input ptr pbi pss psi pmo ;
  input dyn efl fp slo cna flt rsa sbf ll;
run;
于 2015-03-05T16:51:45.723 に答える