🔒 This topic is solved and locked.
Need further help from the community? Please
sign in and ask a new question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 11-09-2017 12:30 PM
(63664 views)
I need to make a condition where if time is <= 09:00 then 1; if time is > 09:00 and < 17:00 then 2 and if > 17:00 then 3.
1 ACCEPTED SOLUTION
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I would guess a CASE statement would get it done, but if all you are doing is setting a flag, I would be tempted to do it in the data step (and this is coming from an SQL guy).
data mytimes;
input id time time.;
datalines;
1105 08:00
1106 08:30
1107 09:10
1108 10:10
1109 12:56
1110 16:59
1111 17:01
1112 23:45
;
run;
* method 1;
data mytime_flags;
set mytimes;
mytimeflag= 0;
if time <= '09:00't then mytimeflag = 1;
if time > '09:00't and time < '17:00't then mytimeflag = 2;
if time >= '17:00't then mytimeflag = 3;
run;
*method 2;
proc sql;
create table mytime_flags2 as
select id, time,
case
when time <= '09:00't then 1
when time > '09:00't and time < '17:00't then 2
when time >= '17:00't then 3
end as mytimeflag
from mytimes;
quit;
1 REPLY 1
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I would guess a CASE statement would get it done, but if all you are doing is setting a flag, I would be tempted to do it in the data step (and this is coming from an SQL guy).
data mytimes;
input id time time.;
datalines;
1105 08:00
1106 08:30
1107 09:10
1108 10:10
1109 12:56
1110 16:59
1111 17:01
1112 23:45
;
run;
* method 1;
data mytime_flags;
set mytimes;
mytimeflag= 0;
if time <= '09:00't then mytimeflag = 1;
if time > '09:00't and time < '17:00't then mytimeflag = 2;
if time >= '17:00't then mytimeflag = 3;
run;
*method 2;
proc sql;
create table mytime_flags2 as
select id, time,
case
when time <= '09:00't then 1
when time > '09:00't and time < '17:00't then 2
when time >= '17:00't then 3
end as mytimeflag
from mytimes;
quit;