2

SASデータセットをUNIXフォルダーに、区切り文字が「〜|〜」のテキストファイルとしてエクスポートしようとしています。

Here is the code I'm using....
PROC EXPORT DATA=Exp_TXT
         OUTFILE="/fbrms01/dev/projects/tadis003/Export_txt_OF_New.txt"
         DBMS=DLM REPLACE;
     DELIMITER="~|~";
     PUTNAMES=YES;
RUN;

これが私がUNIXで得ている出力です.....データに区切り文字の一部がありませんが、変数名に区切り文字全体があります...。

Num~|~Name~|~Age
1~A~10
2~B~11
3~C~12

データのみで区切り文字の一部を取得している理由はありますか????

ありがとう、サム。

4

3 に答える 3

0

私の推測では、PROC EXPORT複数の文字区切り文字の使用はサポートされていません。通常、列の区切り文字は1文字です。したがって、これを行うには、おそらく独自のコードを作成する必要があります。

PROC EXPORT区切られたファイルの場合、実行されるプレーンな古いSASコードが生成されます。SASログにコードが表示され、そこからコードを取得して、必要に応じて変更できます。

役立つ可能性のあるSASマクロについては、この他の質問に対する私の回答を参照してください。書かれたとおりに使用することはできませんが、ニーズに合ったバージョンを作成するのに役立つはずです。

于 2013-01-30T17:16:51.397 に答える
0

この問題は、ファイルステートメントのSASマニュアルページ http://support.sas.com/documentation/cdl/en/lestmtsref/63323/HTML/default/viewer.htm#n15o12lpyoe4gfn1y1vcp6xs6966.htmで参照されています。

Restriction:Even though a character string or character variable is accepted, only the first character of the string or variable is used as the output delimiter. The FILE DLM= processing differs from INFILE DELIMITER= processing.

ただし、(とにかく、いくつかのバージョンの時点で)新しいステートメントDLMSTRがあります。残念ながら、PROC EXPORTでDLMSTRを使用することはできませんが、変数を簡単に書き出すことができない場合は、PROC EXPORTからログを生成してプログラムに貼り付け、DELIMITERをDLMSTRに変更できます。動的に行うこともできます。PROCPRINTTOを使用してログを含むファイルを生成し、そのファイルを読み込んで、行番号と非コードを解析し、DELIMITERをDLMSTRに変更して、コードを%includeします。

于 2013-01-30T20:04:46.540 に答える
0

UNIXを使用しているので、これを修正するためにUNIXツールを使用してみませんか?

Xステートメントを使用してsasプログラムからunixコマンドを呼び出すことができます: http ://support.sas.com/documentation/cdl/en/hostunx/61879/HTML/default/viewer.htm#xcomm.htm

エクスポート後、sedを使用してファイルを修正します

PROC EXPORT DATA=Exp_TXT
         OUTFILE="/fbrms01/dev/projects/tadis003/Export_txt_OF_New.txt"
         DBMS=DLM REPLACE;
     DELIMITER="~";
     PUTNAMES=YES;
RUN;

X sed 's/~/~|~/g' /fbrms01/dev/projects/tadis003/Export_txt_OF_New.txt > /fbrms01/dev/projects/tadis003/Export_txt_OF_New_v2.txt ;

UNIXによっては微調整が必​​要になる場合がありますが、これはAIXで機能します。sedの一部のバージョンでは、-iフラグを使用してその場で編集できるため、ファイル名を2回入力する必要はありません。

これは、大きなマクロよりもはるかに単純で簡単な単一行ソリューションです。

于 2013-02-01T18:59:55.407 に答える