Hi,
I'm trying to identify those people in my dataset, who died before their 80th birthday. I have their birthdate as well as the date of death. I tried to use the intnx function of SAS to compare the date of the 80th birthday and the date of death. Since I have a lot of entries in my dataset, I tried to reference the variable for the birthdate (geb_dat) instead of inserting the dates manually. However, I'm getting errors:
data mi_olink_CR;
set dataset.mi_olink;
if intnx('year', geb_dat, 80, 'same')> mort_dat then put 'died before 80th birthday';
run;This produces the following log statement:
120 data mi_olink_CR;
121 set dataset.mi_olink;
122 if intnx('year', geb_dat, 80, 'same')> mort_dat then put 'died before 80th birthday';
-----------------
49
NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS
release. Inserting white space between a quoted string and the succeeding
identifier is recommended.
123 run;
How do I have to reference the variable geb_dat (DATE9. Format)from the mi_olink_CR dataset in the intnx function?
Thanks!
Arik
Looks to me like unbalanced quotes further up in the code.
This works:
data have;
input geb_dat :yymmdd10. mort_dat :yymmdd10.;
format geb_dat mort_dat yymmddd10.;
datalines;
1930-05-05 2011-04-03
1950-06-03 2012-05-04
;
data want;
set have;
if intnx('year', geb_dat, 80, 'same')> mort_dat then put 'died before 80th birthday';
run;
Log:
73 data have;
74 input geb_dat :yymmdd10. mort_dat :yymmdd10.;
75 format geb_dat mort_dat yymmddd10.;
76 datalines;
NOTE: The data set WORK.HAVE has 2 observations and 2 variables.
NOTE: Verwendet wurde: DATA statement - (Gesamtverarbeitungszeit):
real time 0.00 seconds
cpu time 0.00 seconds
79 ;
80
81
82 data want;
83 set have;
84 if intnx('year', geb_dat, 80, 'same')> mort_dat then put 'died before 80th birthday';
85 run;
died before 80th birthday
NOTE: There were 2 observations read from the data set WORK.HAVE.
NOTE: The data set WORK.WANT has 2 observations and 2 variables.
NOTE: Verwendet wurde: DATA statement - (Gesamtverarbeitungszeit):
real time 0.00 seconds
cpu time 0.00 seconds
Looks to me like unbalanced quotes further up in the code.
This works:
data have;
input geb_dat :yymmdd10. mort_dat :yymmdd10.;
format geb_dat mort_dat yymmddd10.;
datalines;
1930-05-05 2011-04-03
1950-06-03 2012-05-04
;
data want;
set have;
if intnx('year', geb_dat, 80, 'same')> mort_dat then put 'died before 80th birthday';
run;
Log:
73 data have;
74 input geb_dat :yymmdd10. mort_dat :yymmdd10.;
75 format geb_dat mort_dat yymmddd10.;
76 datalines;
NOTE: The data set WORK.HAVE has 2 observations and 2 variables.
NOTE: Verwendet wurde: DATA statement - (Gesamtverarbeitungszeit):
real time 0.00 seconds
cpu time 0.00 seconds
79 ;
80
81
82 data want;
83 set have;
84 if intnx('year', geb_dat, 80, 'same')> mort_dat then put 'died before 80th birthday';
85 run;
died before 80th birthday
NOTE: There were 2 observations read from the data set WORK.HAVE.
NOTE: The data set WORK.WANT has 2 observations and 2 variables.
NOTE: Verwendet wurde: DATA statement - (Gesamtverarbeitungszeit):
real time 0.00 seconds
cpu time 0.00 seconds
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.