2012-07-30 16 views
5

回答できるかどうか疑問に思う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さんのコメントに基づき

  • カルティク
+0

私は "data _null_; set ds1; file 'c:\ test.csv' dlm = '、';を使うことができます。これを機能させるには私はCSVファイルの代わりにExcelのワークブックに明日エクスポートする必要があるかもしれないのでPROC Exportは魅力的だと思われ、 "データステップ"オプションは機能しません。 – Karthik

+6

これはうまくいきませんので、私はコメントとして投稿しています。データビューを使用して、必要なサブセットを作成してエクスポートすることはできますか?つまり、ビューをエクスポートできますか?私は確信していません... – itzy

+0

それは魅力のように働いた!私はそれを解決策として掲示します。ありがとう。 – Karthik

答えて

7

、ここでの答えは、これは私が必要とするまさにありません。

ありがとうございました!