BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
PDevi
Fluorite | Level 6

I am very new to SAS and would appreciate patience and help.

 

I have a data set containing student id, term and audit_type. Each term has 2 audit_types and the student can be present at either of them or be present at both. I need to create a flag for each of these 3 scenarios for each student id each term: 1) if the student is present at only audit_type_1, 2) if s/he is present at only audit_type_2 and 3) if s/he is present at audit_type_1 and audit_type_2 both during that term.

 

**Sample data**
---------------

*Id*            *Term*               *Audit_type*
1                 Fall 2015              1
1                 Fall 2015              2
2                 Winter 2016         1
3                 Winter 2016         2
4                 Spring 2016         1
4                 Spring 2016         2

 

I was able to create a flag for the first 2 scenarios using case when as seen below:

 

proc sql;

create table test as
select id, term, audit_type,
case
when audit_type in ('audit_type_1') then 1
when audit_type in ('audit_type_2 ') then 2
end as audit_type_flag
from have;

 

I can't figure out how to flag the third scenario. So, I want something like below:

 

*Id*            *Term*                  *Audit_type*           *Flag*   
1                 Fall 2015              1                             3
1                 Fall 2015              2                             3
2                 Winter 2016         1                             1
3                 Winter 2016         2                             2
4                 Spring 2016         1                             3
4                 Spring 2016         2                             3

 

All help will be highly appreciated. Thanks in advance for your help and support.

1 ACCEPTED SOLUTION

Accepted Solutions
PGStats
Opal | Level 21

It gets simpler for the edited version of your question:

 

proc sql;

create table test as
select 
    id, 
    term, 
    audit_type,
    sum(distinct audit_type) as audit_type_flag
from have
group by id, term;

quit;
PG

View solution in original post

8 REPLIES 8
PGStats
Opal | Level 21

You can get the flag value by summing the audit_type numbers :

 

proc sql;

create table test as
select 
    id, 
    term, 
    audit_type,
    sum(input(scan(audit_type, 3, "_"), 1.)) as audit_type_flag
from have
group by id;

quit;

(untested)

 

PG
PGStats
Opal | Level 21

It gets simpler for the edited version of your question:

 

proc sql;

create table test as
select 
    id, 
    term, 
    audit_type,
    sum(distinct audit_type) as audit_type_flag
from have
group by id, term;

quit;
PG
PDevi
Fluorite | Level 6
The code returns only blanks.
PeterClemmensen
Tourmaline | Level 20

To be sure to get a usable code answer, include sample data in the form of a data step. @PGStatss solution is good. Run the code below. It generates your desired data set.

 

data have;
length Term $20;
infile datalines dlm=',';
input Id $ Term $ Audit_type;
datalines;
1,Fall 2015,1
1,Fall 2015,2
2,Winter 2016,1
3,Winter 2016,2
4,Spring 2016,1
4,Spring 2016,2
;

proc sql;
   create table want as
   select 
       id, 
       term, 
       audit_type,
       sum(distinct audit_type) as audit_type_flag
   from have
   group by id, term;
quit;
PDevi
Fluorite | Level 6

@PGStatsIt worked, thank you.

PGStats
Opal | Level 21

Try it. Ask a new question if you get stuck.The Forum is there for you.

PG
PDevi
Fluorite | Level 6
I tested and it worked. 🙂 Thanks for your encouragement.

SAS Innovate 2025: Call for Content

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!

Submit your idea!

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
  • 8 replies
  • 1342 views
  • 3 likes
  • 3 in conversation