私は以下の生データを持っています
1,,35,000
2,100,45,000
データセットに以下が必要です
1 . 35000
2 100 45000
これには、dsdオプションとコンマの使用の両方が必要になります。informat。
これを実行する方法は?
私は以下の生データを持っています
1,,35,000
2,100,45,000
データセットに以下が必要です
1 . 35000
2 100 45000
これには、dsdオプションとコンマの使用の両方が必要になります。informat。
これを実行する方法は?
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;
可能性のあるフィールドが一貫性のあるフィールドにあるが、最初のフィールドではない場合は、上記のソリューションを変更して修正できます。それが潜在的に複数の分野にある場合、解決するのがはるかに難しい問題があります。