Hi all,
I would like to get a total of all roads (digit_road1 to digit_road4); When I used the sum statement such as total_digit=sum(of digit_road1-digit_road4) I got the number of states 8 instead of 28 , which represents the number of occurence of roads.
Any help would be greatly appreciated. Thanks
See code below
data traffic;
infile datalines;
input state$ digit_road1 digit_road1 digit_road2 digit_road3 digit_road4 ;
datalines;
AL 101 103 . 345
AK 205 590 500 700
AZ . 100 390 .
IN 890 623 . 678
MD 755 400 222 678
IL 100 225 678 333
CA 800 455 900 567
TX 120 201 862 108;
Where is 8 and 28 coming from based on your sample data?
Depending on your version of SAS you may need to reference the variable list as var1--var2 or var: to use all variables that start with the prefix "var".
I didn't think that would happen with the OF keyword though. In older versions of SAS you could be taking the sum of road1-road4 which is really just the substraction of the two variables.
What would you like your output to look like?
Use the N function (count non missing arguments) and sum statements (retained and initialized at 0)
data traffic;
infile datalines;
input state$ digit_road1 digit_road2 digit_road3 digit_road4 ;
datalines;
AL 101 103 . 345
AK 205 590 500 700
AZ . 100 390 .
IN 890 623 . 678
MD 755 400 222 678
IL 100 225 678 333
CA 800 455 900 567
TX 120 201 862 108
;
data roads;
set traffic end=done;
roads + n(of digit_road1-digit_road4);
states + 1;
if done then output;
keep roads states;
run;
proc print data=roads noobs; run;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.