Hi, I want to create a variable to count the number of values greater than 0 and another one for values less than 0. This is my code, but it is not working for the first register of the category.
data work.cb_dc6;
set work.cb_dc5;
by block;
if (dif>=0) then posi+1;
if (dif<0) then nega+1;
if first.block then posi=0 and nega=0;
run;
Look register #1 CRETEXT1, column posi should begin with 1 no 0. Same problem with register 10 ALICORC1, register 10 for nega column should be 1:

any idea? Thanks in advance!
Set your variables to 0 before you increment them otherwise you're setting them after but not incrementing the variables you need to keep track of.
data work.cb_dc6;
set work.cb_dc5;
by block;
retain posi nega;
if first.block then do;
posi=0; nega=0;
end;
if (dif>=0) then posi+1;
if (dif<0) then nega+1;
run;
Maybe you should initialize before you increment. :smileylaugh: AND you need do; posi=0; nega=0; end; not and.
I'm not sure about what you try to say, this is the change, same problem =(
data work.cb_dc6;
set work.cb_dc5;
by block;
retain posi nega;
if (dif>=0) then posi+1;
if first.block then posi=0;
if (dif<0) then nega+1;
if first.block then nega=0;
run;
Set your variables to 0 before you increment them otherwise you're setting them after but not incrementing the variables you need to keep track of.
data work.cb_dc6;
set work.cb_dc5;
by block;
retain posi nega;
if first.block then do;
posi=0; nega=0;
end;
if (dif>=0) then posi+1;
if (dif<0) then nega+1;
run;
Oh! now I understand it! Thank your 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.
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.