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;
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.