[英]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.