簡體   English   中英

SAS Proc導入csv文件,並用引號引起來

[英]SAS Proc Import csv file with columns enclosed in quotation marks

我有一個特別的問題。 我已經導出了一個csv文件,由於前導零,我在某些列上需要將數據放入美元符號中,有時在導出時,較長的數據號中包括“ E”。 現在,我嘗試將同一文件導入SAS,以查看我的proc導入例程是否正常工作。

當我導入文件時,所有數據都會通過,但是當我實際導出20列時,它們會壓縮為兩列(因此分隔符有問題嗎?)。

並非所有列都用引號引起來,只是其中的幾個。 數據示例:

CustomerID  CustomerName Product  Price  BillingNR 

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

然后將CustomerID和BillingNR用引號引起來。

當只有一些列用引號引起來而另一些不在時,如何導入此數據集? 或者只是在導入時從中刪除所有雙引號? 這是我的代碼:

%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測試只是另一個宏,我可以在其中測試指定的文件是否存在。 我試圖研究不同的方法,並且仍在尋找類似的問題,但是似乎沒有任何效果。

所有答案非常感謝。

or

CSV->逗號分隔值我看不到逗號用作分隔符,但是使用了豎線。

指定您的定界符是管道,然后將GUESSINGROWS選項增加為一個較大的數字,以便它分配正確的長度和類型。

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

我仍然不確定Proc Import是否可以使用。 如果不是這樣,則需要編寫數據步驟代碼,並確保指定將處理引號的DSD選項。

編輯:基於問題編輯,最准確的方法是通過數據步驟進行讀取。 如前所述,DSD選項將處理引號。

如果使用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
"01234",Customer 1,Product1,Price1,"03541"
"52465",Customer 2,Product2,Price2,""
"23454",Customer 3,Product3,Price3,"035411236952154589632154"
;

將產生如下值: 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM