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;
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!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.
Select SAS Training centers are offering in-person courses. View upcoming courses for: