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!
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.