Hello,
I am required to report incidents of X by year, state, mode of transport.
I have a decade worth of data and I used proc sql to count the incidents by mode of transport.
The problem is that I get no 0 counts, so I have some missing rows for some year+state+mode combinations.
How do I fix this issue? I want to have all years and all states and all modes showing with 0s as the count, but the 0 count rows just don't appear.
PROC SQL;
CREATE TABLE WANT AS SELECT
YEAR, STATE, MODE, count(MODE) AS VALUE FROM HAVE
GROUP BY YEAR, STATE, MODE; QUIT;
I think I really overcomplicated this!
No need to use proc sql here. proc freq does a wonderful job...
If you ever need to do this counting with SQL, here is a way to do it:
PROC SQL;
CREATE TABLE WANT AS
SELECT
y.YEAR,
s.STATE,
m.MODE,
count(h.MODE) AS VALUE
FROM
(select unique year from HAVE) as y cross join
(select unique state from HAVE) as s cross join
(select unique mode from HAVE) as m natural left join
HAVE as h
GROUP BY y.YEAR, s.STATE, m.MODE;
QUIT;
(untested)
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.
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.