ここでは、日付を与えるのは1999年7月4日で、今日の日付は2010年11月20日です。SASで毎年どのように日付を作成するのですか?
私は出力テーブルが
07/04/1992
07/04/1993
07/04/1994
07/04/1995
07/04/1996
.
.
.
.
07/04/2016
がSASでこれを得るために私を助けてくださいする必要がありますしたいです。
ここでは、日付を与えるのは1999年7月4日で、今日の日付は2010年11月20日です。SASで毎年どのように日付を作成するのですか?
私は出力テーブルが
07/04/1992
07/04/1993
07/04/1994
07/04/1995
07/04/1996
.
.
.
.
07/04/2016
がSASでこれを得るために私を助けてくださいする必要がありますしたいです。
日付を扱う最も簡単な方法は、それらをそのまま扱い、日付機能を使用することです。このバージョンでは、うるう年の落とし穴を回避していますが、この例のようにINTNXと同日をしようとした場合(簡単にするために)2月29日
data want;
format birth_date mmddyy.;
dob = mdy(4,7,1992);
birth_day = day(dob);
birth_month = month(dob);
birth_year = year(dob);
end_year = year(today());
if month(today()) <= month(dob) & day(today()) < day(dob) then
end_year = end_year - 1;
do year = birth_year to end_year;
birth_date = mdy(birth_month,birth_day,year);
output;
end;
run;
DO
ループをOUTPUT
ステートメントの周りに使用してください。
変数DOBを持つ入力データセットがあり、新しい変数DATE
を作成し、DOBから毎日1つの観測データを生成するとします。
data want ;
set have ;
do date = dob to today();
output;
end;
format date date9.;
run;
あなたがYEARでインクリメントしたい、または任意の他の区間場合は、インデックス変数とINTNX()
関数を使用します。
data want ;
set have ;
do i=0 by 1 until(intnx('year',dob,i+1) > today());
date = intnx('year',dob,i);
output;
end;
format date date9.;
drop i;
run;
はどうもありがとうございました..しかし、これは 、今日にDOBから一年の特定の日付のためにのみフィルタリングする方法をすべての日付を与えるのだろうか?ここで は、テーブルが持つべき唯一 04/07/1992 1993年4月7日 1993年4月7日 。 。 。 2016年4月7日 –
日付を生成するINTNX()関数を使用してください。(intnx(まで1でI = 0を行います」日付= intnx( '年'、dob、I);出力;終了;日付= intnx( '年'、dob、I) – Tom
生まれの人には対応していませんで
data have;
infile cards;
format date1 ddmmyy10.;
input date1 ddmmyy10.;
cards;
07/04/2016
;
run;
data _null_;
format date2 ddmmyy10.;
set have;
date2=intnx('year',date1,-1,"sameday");
put date2;
run;
を見て結果はログになります。 "-1"を "-2"にループすることができます。
このヘルプが必要です。
ヒント: 'data'、' do'。 –
あなたの努力を見せてください、これまでに何を試しましたか? –
私はこれを試してみましたが、dint workです。 data dob; 入力dob mmddyy10; データライン; 04/07/1992 ; 実行; data t1; set dob; b = today(); dif = intck( 'year'、dob、b); 配列diffd [dif];do i = 1〜&dif.; 年(&i)= intnx( '年'、dob、&i、 '同じ'); 実行; しかし、くぼみは仕事:( –