入力ファイルには、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 オプションは必要ないことに注意してください。また、この例では、提供されたサンプル データのすべてのデータが読み取られるわけではないことに注意してください。新しい変数を発明しました。
覚えておくべき重要なことは、ソース ファイルに表示される正しい順序で変数を読み取ることです。