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

Data aa;
input X$ Z $;
datalines;
eliy N
eliya Y
ais N
shsi N
;
run;

 

I want to add a column ‘K’. If column'Z' contains Y, then all values in column 'K' are Y, else are N.

Who could tell me ....if I could do this in just one data step or one proc sql?I don't hope to first get a dataset then merge or join.

 

1 ACCEPTED SOLUTION

Accepted Solutions
gamotte
Rhodochrosite | Level 12

Hello,

Not tested :
Proc sql;
CREATE TABLE want AS
SELECT a.*, b.K
FROM aa AS a
LEFT JOIN (
SELECT CASE WHEN SUM(Z="Y") THEN "Y" ELSE "N"
END AS K
FROM aa
) AS b
ON 1;
quit;

View solution in original post

5 REPLIES 5
gamotte
Rhodochrosite | Level 12

Hello,

Not tested :
Proc sql;
CREATE TABLE want AS
SELECT a.*, b.K
FROM aa AS a
LEFT JOIN (
SELECT CASE WHEN SUM(Z="Y") THEN "Y" ELSE "N"
END AS K
FROM aa
) AS b
ON 1;
quit;

cecily
Calcite | Level 5

oh!!This is what I want! Thank you very much!

RW9
Diamond | Level 26 RW9
Diamond | Level 26

Or to simplfy:

proc sql;
  create table WANT as
  select  *,
          case when exists(select distinct Z from AA where Z="Y") then "Y"
               else "N" end as K
  from    AA;
quit;

 

Actually, saying that:

 

proc sql;
  create table WANT as
  select  *,
          coalesce((select distinct Z from AA where Z="Y"),"N") as K
  from    AA;
quit;
PBsas
Obsidian | Level 7

Are you looking for something like this?

 

data want;

set aa;

if z = "Y" then K = "Y";

else k = "N";

run;

cecily
Calcite | Level 5

No. what I want is all values for that new column are ‘Y’ if column 'Z' contains 'Y'.  I have got the right answer. Thank you very much!

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 5 replies
  • 1477 views
  • 1 like
  • 4 in conversation