2016-09-15 8 views
0

特に問題があります。私は先行ゼロのためにデータを引用符で囲むために必要ないくつかの列のcsvファイルをエクスポートしました。また、長いdatanumberにはエクスポート時に "E"が含まれることがあります。今、私は同じファイルをSASにインポートしようとしています。私のprocインポートルーチンが動作するかどうかを確認するためです。SAS Procカラムを引用符で囲んでcsvファイルをインポートします。

ファイルをインポートすると、実際にデータがエクスポートされたときにすべてのデータが処理されますが、2つの列に圧縮されます(したがって、区切り記号は間違っていますか?)。

すべての列が二重引用符で囲まれているわけではありません。データの例:

CustomerID CustomerName Product Price BillingNR 

""  Customer 1 Product1 Price1 "03541"  
"52465"  Customer 2 Product2 Price2 ""   
"23454"  Customer 3 Product3 Price3 "035411236952154589632154" 

CustomerIDとBillingNRは、引用符で囲みます。

一部の列のみが引用符で囲まれていて、他の列が引用符で囲まれていない場合、このデータセットをインポートするにはどうすればよいですか。 インポート時に二重引用符をすべて削除するだけですか? HERESに私のコード:

%macro import; 

%if &exist= "Yes" %then %do; 
    proc import 
    datafile= "\\mypath\data.csv" 
     DBMS=CSV 
     out=Sales 
     replace; 
     getnames=YES; 
    run; 
%end; 

%else %do; 
%put Nothing happens; 
%end; 


%mend; 

%lesInn; 

IF/ELSE-テストは、指定されたファイルが存在する場合、私はテストだけで、別のマクロです。私はさまざまな方法を研究しようとしましたが、今でも同様の問題を探していますが、動作するようなことは何もありません。

すべての回答を高く評価しました。

Toor

+0

CSVは本当にあなたの例のように見えるのでしょうか?次に、 'delimiter = '|';'を追加する必要があります。それとも抽象的なサンプルですか? – kl78

+0

申し訳ありませんが、抽象的な例です。例のパイプを削除しました – Jaz

+0

質問は何ですか? PROC IMPORTがどの列が数値か文字かを把握するのに賢明であるかどうか尋ねていますか? – Tom

答えて

0

DSDオプションを使用してファイルを読み取ると、SASは自動的に値の前後の引用符を削除します。あなたのサンプルデータのほとんどのように、引用符で囲む必要のない値を引用符で囲みます。

data want ; 
    infile cards dsd truncover firstobs=2; 
    length CustomerID $5 CustomerName $20 Product $20 Price $8 BillingNR $30 ; 
    input CustomerID -- BillingNR ; 
cards; 
CustomerID,CustomerName,Product,Price,BillingNR 
"",Customer 1,Product1,Price1,"03541" 
"52465",Customer 2,Product2,Price2,"" 
"23454",Customer 3,Product3,Price3,"035411236952154589632154" 
; 

は次のような値になります: enter image description here

0

CSV - >カンマ区切り値は 私はカンマがあなたの区切り文字が、パイプとして使用されて表示されません。

デリミタがパイプであることを指定し、正しい長さとタイプを割り当てるようにGUESSINGROWSオプションを大きくします。

Proc import ... DBMS = DLM Replace; 
Delimiter='|'; 
GuessingRows=10000; 
....remaining options; 
Run; 

Proc Importが動作するかどうかはまだ分かりません。そうでない場合は、データステップコードを記述し、引用符を扱うDSDオプションを指定する必要があります。

編集:質問の編集に基づいて、最も正確な方法はデータステップで読み込むことです。前述のように、DSDオプションは引用符を処理します。

+0

申し訳ありませんが、この例は抽象的です。私はパイプを編集して取り除いた。 – Jaz

+0

大きなデータサンプルがあるかもしれませんが、インポートするファイルが5行か10行だけだった場合、GuessingRowsは機能しませんでしたか? – Jaz

関連する問題