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.
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;
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;
oh!!This is what I want! Thank you very much!
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;
Are you looking for something like this?
data want;
set aa;
if z = "Y" then K = "Y";
else k = "N";
run;
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!
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!
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.
Ready to level-up your skills? Choose your own adventure.