0

次のデータがあります。

data d;
input date1 $ date2 $;
cards;
5oct10  11nov11
6jul12  12oct13
1jan08  4may10
4may04  8jul06
1mar07  5aug07
18may04 1oug09
7aug05  8jul09
1feb03  5apr06
3feb01  15jul08
4apr07 16apr07
run;

*date7.informat でこれを読み取り、date9.format でデータを提示する必要があります。

*まず幅形式でデータを読み取るにはどうすればよいですか? また、車が完全に数値ではない場合に、日付の幅を 7 から 9 に変換するにはどうすればよいですか?

そのようなことをしようとするとき:

proc print data=d;
format date1 date2 date9.;;
run;

完全に数値ではないvarで数値形式を使用しているため、失敗します

4

3 に答える 3

1
data d;
input date1 date7.  date2 date7.;
format date1 date9. date2 date9.;
cards;
5oct10  11nov11
6jul12  12oct13
1jan08  4may10
4may04  8jul06
1mar07  5aug07
18may04 1oug09
7aug05  8jul09
1feb03  5apr06
3feb01  15jul08
4apr07 16apr07
;
run;
于 2015-06-13T17:02:56.200 に答える
0

次のようにデータ ステップを変更します。

input date1 date7. date2 date7.;

日付変更線の読み取りに使用した場合date1 $、結果のデータセットには date1 = の値が含まれます '5oct10','6jul12' and so on。ただし、で形式を適用する場合はdate9.proc printSAS 時間値を指定する必要があります。SAS は、1960 年 1 月 1 日からカウントする独自の形式で時間値を読み取ることに注意してください。SAS でステートメント `put "today is today()" を実行して、それを試すことができます。

変更後、proc print ステートメントは完全に機能するはずです。

そして、何らかの理由で、date1 と date2 の値を独自の形式で読み取りたい場合、つまり5oct10、日、月、年の値をそれぞれ (たとえばscan関数で) 分離し、関数を使用する必要があるかもしれません。MDY( month, day, year)それを SAS 時間値に変換します。date7.この場合、 atステートメントを使用した format ステートメント proc printも機能します。

于 2015-06-13T15:04:32.067 に答える