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?
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.