回答できるかどうか疑問に思うPROC EXPORTの質問があります。SAS:PROC EXPORTでの変数の制限
私は800以上の変数と200,000以上の観測値を持つSASデータセットを持っており、変数のサブセットをCSVファイルにエクスポートしようとしています(つまり、すべてのレコードが必要です。 。私はいつも一時的なデータセットを作成し、必要なフィールドだけを保存し、その一時データセットでEXPORTを実行することができますが、私はレコードが大量にあるので追加のステップを避けようとしています。
これを実証するには、x、y、zの3つの変数を持つデータセットを考えてみましょう。しかし、PROC EXPORTで生成されたテキストファイルにはxとyのみが含まれています。以下の解決策で私の試みはうまくいきません。
SASコード
私は、次のコードを実行すると、私はまさに私が必要なものを得ることはありません。このコードを実行し、生成されたテキストファイルを見ると、すべての行の最後にカンマがあり、ヘッダーにはデータセットのすべての変数が含まれています。また、私はログにいくつかのメッセージを受け取ってはいけません。ここで
が生成されたテキストファイルの最初の数行です( "C:\のtest.CSV")
x,y,z
1,1,
2,4,
3,9,
4,16,
がSASログ
9343 proc export data=ds1(keep=x y)
9344 file='c:\test.csv'
9345 dbms=csv
9346 replace;
9347 quit;
9348 /**********************************************************************
9349 * PRODUCT: SAS
9350 * VERSION: 9.2
9351 * CREATOR: External File Interface
9352 * DATE: 30JUL12
9353 * DESC: Generated SAS Datastep Code
9354 * TEMPLATE SOURCE: (None Specified.)
9355 ***********************************************************************/
9356 data _null_;
9357 %let _EFIERR_ = 0; /* set the ERROR detection macro variable */
9358 %let _EFIREC_ = 0; /* clear export record count macro variable */
9359 file 'c:\test.csv' delimiter=',' DSD DROPOVER lrecl=32767;
9360 if _n_ = 1 then /* write column names or labels */
9361 do;
9362 put
9363 "x"
9364 ','
9365 "y"
9366 ','
9367 "z"
9368 ;
9369 end;
9370 set DS1(keep=x y) end=EFIEOD;
9371 format x best12. ;
9372 format y best12. ;
9373 format z best12. ;
9374 do;
9375 EFIOUT + 1;
9376 put x @;
9377 put y @;
9378 put z ;
9379 ;
9380 end;
9381 if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
9382 if EFIEOD then call symputx('_EFIREC_',EFIOUT);
9383 run;
NOTE: Variable z is uninitialized.
NOTE: The file 'c:\test.csv' is:
Filename=c:\test.csv,
RECFM=V,LRECL=32767,File Size (bytes)=0,
Last Modified=30Jul2012:12:05:02,
Create Time=30Jul2012:12:05:02
NOTE: 101 records were written to the file 'c:\test.csv'.
The minimum record length was 4.
The maximum record length was 10.
NOTE: There were 100 observations read from the data set WORK.DS1.
NOTE: DATA statement used (Total process time):
real time 0.04 seconds
cpu time 0.01 seconds
100 records created in c:\test.csv from DS1.
NOTE: "c:\test.csv" file was successfully created.
NOTE: PROCEDURE EXPORT used (Total process time):
real time 0.12 seconds
cpu time 0.06 seconds
どれでもどのように私はこの問題を解決することができますアイデア?私はWindows 9でSAS 9.2を実行しています。
何か助けていただければ幸いです。ありがとう。私の質問にItzyさんのコメントに基づき
- カルティク
私は "data _null_; set ds1; file 'c:\ test.csv' dlm = '、';を使うことができます。これを機能させるには私はCSVファイルの代わりにExcelのワークブックに明日エクスポートする必要があるかもしれないのでPROC Exportは魅力的だと思われ、 "データステップ"オプションは機能しません。 – Karthik
これはうまくいきませんので、私はコメントとして投稿しています。データビューを使用して、必要なサブセットを作成してエクスポートすることはできますか?つまり、ビューをエクスポートできますか?私は確信していません... – itzy
それは魅力のように働いた!私はそれを解決策として掲示します。ありがとう。 – Karthik