私はデータセットを持っていますが、という変数を1つだけ持つData1
と呼びます。これからテキストファイルに各エントリを保存したいのですが、次のエントリに移動します。次のエントリがテキストファイルに書き込まれたら、前のエントリを上書きする必要があります。私はFILE文を使用していますが、なんらかの理由で古いエントリに新しいエントリを追加し続けます。私は、次のコードをしている:私はmyfile.txtの開いたときに、私はすべての観測のためのエントリがそれぞれのために、1行に保存されていることをFILE文を使用してファイルのテキストを上書きする
data _null_;
set Data1;
do i = _N_;
if i > 0 then do;
file "myfile.txt";
put V1;
end;
end;
run;
参照してください。しかし、私が望むのは、最後のエントリだけを保存する必要があるということです(私は後でループに他のものを追加しますが、重要なのは古いコンテンツが上書きされるということです)。
"OLD"オプションをFILEステートメントに追加しようとしましたが、OLDがサポートされなくなったというメッセージが表示されます。私はSAS 9.4を使用しています。
ありがとうございます!
'put V1;'を 'put @ 1 V1 @@;'に置き換えると、各データステップループの後にカーソル位置が保持され、次に列1に書き出しが再開されます。(V1は一定の長さ、技術的には、以前のV1の値が長い場合は、そのテキストの一部が残る) – mjsqu
ありがとうございます! V1は実際には一定の長さではありません(私はあなたがV1の各エントリの文字数を意味していると仮定します)。つまり、最後のエントリがたとえば20文字で、前の値が30の場合、最後のエントリがファイルに書き込まれたときに、前のエントリの最後の10が残りますか? –
はい、そうです。あなたは次のものを追加することができます: 'filler = repeat( ''、200); @ 1フィラーを入れる@@; put @ 1 V1 @@; 'これは空白で前のエントリをクリアします。おそらくこれを行う他の方法があるので、私は実際の答えよりもむしろコメントで回答します。 – mjsqu