2014-06-23 57 views
1

我有一個以分號分隔的csv文件,但是我有一個內部帶有分號的字段。它由{}分隔。sas導入數據eclosed由{}分隔;

領域的一個例子(它的名稱是 「鄰居」)將是:

{ 「T」:0, 「N」: 「花園大西洋」, 「I」:0}

但在某些線I可以有:

{ 「T」:0, 「I」:0, 「N」: 「JD」; 「索羅卡巴公園」}

所以,當我運行

proc import 
    datafile='D:\nnl_muest_result_bs.csv' 
    dbms=dlm 
    out=muest_Re.I03_nnl_result_bs; 
    delimiter=';'; 
    guessingrows=32767; 
run; 

它分割由分號,這是確定的其餘字段但不是在這一個。

如何告訴SAS使用分號分割,但忽略大括號內的那些{}?

感謝

回答

1

我還沒有發現任何與PROC進口有用的,但你可以用一個更手動方法解決問題。 我創建一些測試數據:

a;b;n{c;d}e;g 
aa;bb;mm{cc;dd;ee}ff;h 

,這裏是哪裏的註釋部分必須根據你的變量是record長度(你也許需要添加一個LRECL要修改的代碼=和firstobs = 2 in the infile statement)

data test; 
infile "C:\Dati\EsempiSAS\graffe.txt" pad missover; 
input @1 record $CHAR100.; 
piece1=substr(record,1,indexc(record,"{")-1); 
piece2=substr(record,indexc(record,"{")+1,(indexc(record,"}"))-(indexc(record,"{")+1)); 
piece3=substr(record,indexc(record,"}")+1); 
/* 
var1=scan(piece1,1,";"); 
var2=scan(piece1,2,";"); 
var3=scan(piece1,3,";"); 
var4=piece2; 
var5=scan(piece3,1,";"); 
var6=scan(piece3,2,";"); 
*/ 
run; 
+0

感謝您的工作......我找不到某物:S – GabyLP