Ever open a piece of complex code someone else wrote and think:
Like you’re really in for it?
Ever look at your own old code and think exactly the same thing?
If you said yes — to either (or both) — you’re in good company. Hackers gotta hack, and sometimes we could all use a little help making sense of what’s in front of us.
That’s where ChatGPT comes in again — as your coding partner.
Suppose you inherit a block of SAS code that looks something like this:
*-------------------------------------------------------------------------------------*
| Collapse Data |
| Produce State-Level Estimates |
*-------------------------------------------------------------------------------------*;
******************************************************** By State ;
proc sql;
create table hhs.covid_labor_supply as
select distinct state_fip, state_name,
year(yearquarter) as Year format 9.,
/******************************************************************* Labor Force Status | All */
sum( ( unemp=1 ) * WTFINL ) / sum( ( in_LF=1 ) * WTFINL ) as UE_Women label="Unemployment Rate" format percent9.1 ,
sum( ( in_LF=1 ) * WTFINL ) / sum( WTFINL ) as LFP_Women label="LFP Rate" format percent9.1 ,
/******************************************************************* Labor Force Status | By Education */
/******************************************************* Unemployment */
sum( ( educ_ltd="High School Diploma" ) * ( unemp=1 ) * WTFINL ) / sum( ( educ_ltd="High School Diploma" ) * ( in_LF=1 ) * WTFINL ) as UE_Women_HS label="EDUC <= HS" format percent9.1 ,
sum( ( educ_ltd="Some College" ) * ( unemp=1 ) * WTFINL ) / sum( ( educ_ltd="Some College" ) * ( in_LF=1 ) * WTFINL ) as UE_Women_SCollege label="Some College" format percent9.1 ,
sum( ( educ_ltd="College +" ) * ( unemp=1 ) * WTFINL ) / sum( ( educ_ltd="College +" ) * ( in_LF=1 ) * WTFINL ) as UE_Women_CollegeP label="College +" format percent9.1 ,
/******************************************************* LFP */
sum( ( educ_ltd="High School Diploma" ) * ( in_LF=1 ) * WTFINL ) / sum( ( educ_ltd="High School Diploma" ) * WTFINL ) as LFP_Women_HS label="EDUC <= HS" format percent9.1 ,
sum( ( educ_ltd="Some College" ) * ( in_LF=1 ) * WTFINL ) / sum( ( educ_ltd="Some College" ) * WTFINL ) as LFP_Women_SCollege label="Some College" format percent9.1 ,
sum( ( educ_ltd="College +" ) * ( in_LF=1 ) * WTFINL ) / sum( ( educ_ltd="College +" ) * WTFINL ) as LFP_Women_CollegeP label="College +" format percent9.1 ,
/******************************************************************* Labor Force Status | By Child Status */
/******************************************************* Unemployment */
sum( ( child_status="No Children" ) * ( unemp=1 ) * WTFINL ) / sum( ( child_status="No Children" ) * ( in_LF=1 ) * WTFINL ) as UE_Women_NoKids label="No Children" format percent9.1 ,
sum( ( child_status="Older Children" ) * ( unemp=1 ) * WTFINL ) / sum( ( child_status="Older Children" ) * ( in_LF=1 ) * WTFINL ) as UE_Women_OlderKids label="Older Children" format percent9.1 ,
sum( ( child_status="Child < 5" ) * ( unemp=1 ) * WTFINL ) / sum( ( child_status="Child < 5" ) * ( in_LF=1 ) * WTFINL ) as UE_Women_YoungKids label="Young Children" format percent9.1 ,
/******************************************************* LFP */
sum( ( child_status="No Children" ) * ( in_LF=1 ) * WTFINL ) / sum( ( child_status="No Children" ) * WTFINL ) as LFP_Women_NoKids label="No Children" format percent9.1 ,
sum( ( child_status="Older Children" ) * ( in_LF=1 ) * WTFINL ) / sum( ( child_status="Older Children" ) * WTFINL ) as LFP_Women_OlderKids label="Older Children" format percent9.1 ,
sum( ( child_status="Child < 5" ) * ( in_LF=1 ) * WTFINL ) / sum( ( child_status="Child < 5" ) * WTFINL ) as LFP_Women_YoungKids label="Young Children" format percent9.1
from hhs.hhs_otj_raw
group by 1,2,3
order by 1,2,3 ;
quit;
A ChatGPT prompt:
The response:
Ha: the “Kid level idea”!
I love how ChatGPT took that scary-looking SQL code and made it instantly more approachable with a jellybean analogy.
And if jellybeans aren’t your thing – or you’d rather think like an 8-year-old instead of a 10-year-old – you’re just one prompt refinement away from a different example and a fresh perspective.
Once again, this shows how dynamic your conversation can be with your research partner in crime: ChatGPT.
(Editor’s note: Crime is bad. Don’t use ChatGPT for that.)
The “explain this code for me” trick is powerful, so I’ll just keep this post short. But use it – seriously – use it.
And I’ll see you in the final post for this series: Use ChatGPT to document your code today. Trust me, this will make future you happy.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
The rapid growth of AI technologies is driving an AI skills gap and demand for AI talent. Ready to grow your AI literacy? SAS offers free ways to get started for beginners, business leaders, and analytics professionals of all skill levels. Your future self will thank you.