0

一般的な質問です。日付を比較するコードがあり、正常に動作していますが、日付の代わりに疑問符が表示される列があります。私のコードが列を介して実行されるとき、疑問符が決定に影響を与えるべきではありませんか? これが誤った決定を作成している場合、データセットのすべての列で?を欠損値に置き換える方法はありますか?

Data new1;
set new;
format first date MMDDYY10. Last date MMDDYY10.    
first = min(input(serve_date, MMDDYY10.), input(rev_start, MMDDYY10.);
last = max(input(serve_date, MMDDYY10.), input(rev_start, MMDDYY10.);
drop date;
run;
4

1 に答える 1

1

日付フィールド (文字) に「?」が含まれている場合 その中で、INPUTがそれにヒットすると、自動的に欠損値が取得されます(およびログ内のメッセージ)。

Data new1;
set new;
format first MMDDYY10. Last MMDDYY10.;
first = min(input(serve_date, ??MMDDYY10.), input(rev_start, ??MMDDYY10.);
last = max(input(serve_date, ??MMDDYY10.), input(rev_start, ??MMDDYY10.);
run;

?? 悪い変換を無視するように指示します。ただし、別の問題があります。それが見つからない場合はどうすればよいですか?

欠落している 1 つを自動的に最初または最後に欠落させたい場合は、次のようにする必要があります (正確な詳細に応じて)。

Data new1;
set new;
format first MMDDYY10. Last MMDDYY10.;
if (rev_start ne "?" and serve_date ne "?") then do;
  first = min(input(serve_date, ??MMDDYY10.), input(rev_start, ??MMDDYY10.);
  last = max(input(serve_date, ??MMDDYY10.), input(rev_start, ??MMDDYY10.);
end;
run;

欠落が 1 つでも問題ない場合は、最初と最後のどちらを欠落させ、どれを有効な値にするかを検討し、そのように設定する必要があります。

于 2013-09-05T20:09:37.183 に答える