I am new to SAS. I spent a couple of days looking for a way to return row number, but no success. I wonder whether you can kindly help me
For example, this is the data set
ID X Y
1 10 2
2 15 3
3 21 6
4 7 15
I need SAS to look for X=21, and return ID=3, then I can change Y[3] from 6 to 8.
This should be a simple task, but I cannot solve it. Thanks.
Two simple ways.
If you don't mind creating a new dataset:
data want;
set have;
if X=21 then Y = 8;
run;
If you don't mind using SQL:
proc sql;
update have set Y = 8 where X=21;
quit;
PG
Two simple ways.
If you don't mind creating a new dataset:
data want;
set have;
if X=21 then Y = 8;
run;
If you don't mind using SQL:
proc sql;
update have set Y = 8 where X=21;
quit;
PG
Alternatively,
data have;
input ID X Y;
row=_n_;
if row=3 then flag=1;
if flag=1 then y=8;
cards;
1 10 2
2 15 3
3 21 6
4 7 15
;
run;
Thans,
jag
If you are looking just to return the row number or the observation number then use SAS automatic variable _N_ thats holds the observation number of the observation read.
data test;
input id x y;
if x=21 then
do
rowno=_n_; /* rowno holds the observation number*/
y = 8; /* control is on the current observation */
end;
cards;
1 10 2
2 15 3
3 21 6
4 7 15
;
run;
What if X has two rows with the value 21?
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.