0

私は以下の生データを持っています

1,,35,000  
2,100,45,000

データセットに以下が必要です

1 .   35000  
2 100 45000

これには、dsdオプションとコンマの使用の両方が必要になります。informat。

これを実行する方法は?

4

1 に答える 1

1

DSDはこれとは何の関係もありません-DSDには、1、 "35,000" 2,100、"45,000"のような入力が含まれます

それがお持ちの場合は、:演算子を使用して、コンマ形式で読み込むことができます。

data test;
infile datalines dlm=',' dsd;
input id
num
dollar :comma8.;    
datalines;
1,,"35,000"
2,100,"45,000"
;;;;
run;

フィールドの前後に引用符がない場合は、これを何らかの方法で解析する必要があります。以下に1つの解決策を示します。これは、コンマを含むフィールドが最後のフィールドである限り機能します。

data test;
infile datalines dlm=',' dsd;
input @;
if countc(_infile_,',') =3 then do;
 _commapos = findc(_infile_,',',-1*length(_infile_));
 _infile_ = substr(_infile_,1,_commapos-1)||substr(_infile_,_commapos+1);
end;
input id
num
dollar ;
put _all_;
datalines;
1,,35,000
2,100,45,000
;;;;
run;

可能性のあるフィールドが一貫性​​のあるフィールドにあるが、最初のフィールドではない場合は、上記のソリューションを変更して修正できます。それが潜在的に複数の分野にある場合、解決するのがはるかに難しい問題があります。

于 2012-09-27T18:34:50.587 に答える