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?
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.