HI!
I have numeric values in time variables using military time. When I try the HHMM. the output is not correct
My data values look like this
Time |
120 |
2130 |
10 |
1128 |
23 |
50 |
Want to look like this:
Time | Want |
120 | 01:20 |
2130 | 21:30 |
10 | 00:10 |
1128 | 11:28 |
23 | 00:23 |
50 | 00:50 |
Any suggestion appreciated!!
Before you can use a time format, you have to convert the numbers to date-time numbers.
Something like this:
time2=hms(floor(time/100),mod(time,100),0); /* Convert time to hours and minutes using the hms function */ format time2 hhmm5.;
Probably a slicker way, but this should work:
data have;
input have;
timepad = strip(put(have, z4.));
want = hms(substr(timepad, 1, 2), substr(timepad, 3, 2), 0);
format want time5.;
datalines;
120
2130
10
1128
23
50
;
Before you can use a time format, you have to convert the numbers to date-time numbers.
Something like this:
time2=hms(floor(time/100),mod(time,100),0); /* Convert time to hours and minutes using the hms function */ format time2 hhmm5.;
Mine isn't smart, but fun though-
data have;
input time;
datalines;
120
2130
10
1128
23
50
;
data want;
set have;
new_time=cats(reverse(substr(reverse(time),3)),':',substr(time,length(time)-1));
if length(new_time)=3 then new_time=cats('00',new_time);
run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.