BookmarkSubscribeRSS Feed
Mikkel_madsen
Obsidian | Level 7

Hello everyone,

 

I have a dataset (openinghours.data) that I want to adjust. It looks like:

 

ID          Type                   Start_time       End_time

102        Monday              8:00:00            17:00:00

102        Tuesday             8:00:00            17:00:00

102        Wednesday        8:00:00            17:00:00

102        Thursday            8:00:00            17:00:00

102        Friday                 8:00:00            17:00:00

104        Monday              7:00:00            19:00:00

104        Tuesday             7:00:00            19:00:00

104        Wednesday        7:00:00            19:00:00

104        Thursday            7:00:00            19:00:00

104        Friday                 7:00:00            19:00:00

111        Monday              9:00:00            21:00:00

111        Tuesday             9:00:00            21:00:00

111        Wednesday        9:00:00            21:00:00

111        Thursday            9:00:00            21:00:00

111        Friday                 9:00:00            21:00:00

111        Saturday            10:00:00          15:00:00

111        Sunday              10:00:00          13:00:00

 

Is it possible to re-arrange the dataset to something that only have one observation per ID number? It should still be possible to use the Start_time and End_time for each observation. Maybe something like this:

 

ID       Monday                     Tuesday                 Wednesday            ....... etc   

102    8:00:00-17:00:00       8:00:00-17:00:00    8:00:00-17:00:00   ....... etc

 

Later on, I have another dataset with the same ID numbers and some observation dates (e.g. 17FEB2018). I then want to ask, which observations from this dataset (openinghours.data) that are available on a given date and a given time (in the opening hours between Start_time and End_time). Is that possible with the setup just described?

 

I'm using SAS Enterprise Guide Version 9.1 and I am all new to this! 

 

Thank you in advance! 

1 REPLY 1
Jagadishkatam
Amethyst | Level 16

We can get the expected output as per the first dataset, but with regard to merging the first dataset with second is complicated as there is no date in the first dataset as there is only time.

 

data have;
input ID Type $ Start_time:time8. End_time:time8.;
time=catx('-',put(Start_time,time8.),put(End_time,time8.));
cards;
102 Monday 8:00:00 17:00:00
102 Tuesday 8:00:00 17:00:00
102 Wednesday 8:00:00 17:00:00
102 Thursday 8:00:00 17:00:00
102 Friday 8:00:00 17:00:00
104 Monday 7:00:00 19:00:00
104 Tuesday 7:00:00 19:00:00
104 Wednesday 7:00:00 19:00:00
104 Thursday 7:00:00 19:00:00
104 Friday 7:00:00 19:00:00
111 Monday 9:00:00 21:00:00
111 Tuesday 9:00:00 21:00:00
111 Wednesday 9:00:00 21:00:00
111 Thursday 9:00:00 21:00:00
111 Friday 9:00:00 21:00:00
111 Saturday 10:00:00 15:00:00
111 Sunday 10:00:00 13:00:00
;


proc transpose data=have out=trans;
by id;
id type;
var time;
run;
Thanks,
Jag

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 275 views
  • 0 likes
  • 2 in conversation