BookmarkSubscribeRSS Feed

SAS Internship Experience: My Journey Learning SAS

Started ‎02-27-2021 by
Modified ‎04-08-2021 by
Views 11,224

Introduction:

Hi, my name's Abrah Furbee. I'm a senior at Broughton high school in Raleigh, North Carolina. I enjoy baking, making friendship bracelets, and playing video games. In addition to these activities, I love statistics. I've always had a math-wired brain and statistics are so intriguing to me. I just love the process of gathering data and seeing what kinds of things I can learn from it. 

 

This year, I was given the opportunity to enroll in an internship class at my school. I decided to formalize my interests in analytics and learn SAS and Python programming. With the help of my dad, @joeFurbee we put together a plan of different courses and projects for me to work on throughout the year. We also lined up a set of mentors who work at SAS to help guide me through my journey. In this on-going community article, I will document my thoughts and experiences.

 

My objectives for the internship class are to learn SAS programming (and some Python), better understand the world of analytics and to really delve into "nerdy computer" stuff that will put me ahead of other kids my age and establishing myself in the STEM field.

 

 

 

dividerLine.png

 

Week 1+ 1/2:

The first course in my internship is Programming I. I'm working with a different mentor for each course.

 

Technically, I started around August 18th. I wasn't actively in school but I wanted to get a head start. The day prior to my start, I had a meeting with my mentor; she helped me create a SAS Profile, sign up in the SAS Community, and register for and set up the required files for Programming I. 

 

I really didn't have a single clue what I was doing, but I always believe if you pretend to know, eventually you'll get it. I've always (and continue) to have trouble knowing what code to write. For example, the lesson will tell me to write a PROC CONTENTS statement. I knew I had to write...

 

proc contents data=

 

...or something like that, but I would usually look at the answer to get a better idea of what code to write. 

 

Fast forward to my first real week of school, I make my way into lesson two of Programming I. I ran into a big issue around the 20th. I couldn't find my file path. I was really frustrated. I asked my dad for help and he couldn't really figure it out, either, at first glance, so I just dropped it. He did some digging for me and we figured out how to find the file path location! (I had to right click on and access the file properties.) It was a great breakthrough and it's definitely stuck with me; I've had to use it a lot. 

 

I'm pretty proud of my work during Lesson 3; here's a screenshot of the program I ran. 😁

 

scrnli_8_29_2020_6-43-27 PM.png

 

I did the Lesson 2 Challenge, but didn't really know what it meant. So I'm going to ask my mentor about it. 

 

Week 2

I started Lesson 3 this week and I love it! Honestly it's been a lot easier than Lesson 2, I feel like I understand what each of the commands mean a little better. It's a lot more of organizational stuff, which I really enjoy. 

 

I talked to my mentor earlier in the week, she told me not to focus too much on the challenges. They're more of "informative things to know if you ever run into this issue." I also mentioned to her that the whole course was just strange, I felt like I was going through motions without really understanding what I was doing. I felt like I couldn't just bust out some code on the spot. She reassured me by telling me if I was going to apply this in the future, I would also have instructions I would have to follow when I would do SAS Programming. This made me feel a lot better. I was most worried about having to look at a data set and then know exactly what to fix about it. Fortunately, that's not the case.

 

The materials in Lesson 3 were definitely enjoyable! 😗

 

Week 3 & 4

I finished Lesson 3 and have moved on to Lesson 4. I've found Lesson 4 to be really cool as well. I like how simple it is to make new columns. It totally blew my mind when I was able to create a column from MaxWindMPH to create MaxWindKM! It was exciting. 

 

Later on in the week, I encountered conditional processing... I definitely didn't grasp it. 😓  But I trudged through and got to the final practices, which I attempted Monday before my meeting with my mentor. Still didn't understand it. However after my meeting with my mentor, in which we created a scenario using the SASHelp data, I finally understood the steps of conditional processing! I was very relieved and happy once I finished Lesson 4. Now onto Lesson 5! 

 

I started really, really late in the week, I haven't really been feeling up to doing a lot of work recently. But I started on Lesson 5 today (Thursday) and it's really fun! It's more organizational and visual based; making the data look pretty, which is what I've particularly enjoyed doing in Programming 1. I've gotten to something crazy: ODS Graphics... I actually made a graph! 😮  Crazy!

ods graphics on;

scrnli_9_17_2020_8-20-06 PM.png

 

This is so cool! It kind of relates (but not really) to my AP Statistics class, we have to create graphs using a website called https://www.stapplet.com/ to compute graphs. I just think this is so neat, it's important to display data in different ways, not just through tables.

 

Week 5

I've definitely been slacking... Schoolwork is piling up ! But that's a part of being a senior I guess😞. I intended on finishing Lesson 5 over the weekend, but I didn't have the chance to get to it. So I'm going to finish it this Monday and Tuesday, and this week I plan to get at least halfway through Lesson 6 as well. 

 

While attempting practices at the end of Creating Frequency Reports, I came across the code for the challenge; 

title1 'Counts of Selected Park Types by Park Region';
proc sgplot data=pg1.np_codelookup;
    where Type in ('National Historic Site', 'National Monument', 'National Park');
    hbar region / group=type;
    keylegend / opaque across=1 position=bottomright location=inside;
    xaxis grid;
run;

Not gonna lie, I couldn't really figure out what it meant, but it is SO COOL ! I want to know how to make the graphs all different types of colors and in different formats. It's not really useful for Programming I but I'd love to learn how to do this for my own enjoyment sometime. 

 

I started Lesson 6 and it's reminding me a lot of Lesson 2. It's all about exporting data, which I wasn't the best at in the lessons prior. Of course, I ran into filepath issues again, but I was able to resolve on my own. I remembered how I couldn't just follow what the lesson said, and had to use my own individual path. Hopefully I'll be able to finish this lesson before the end of the week. I have a long weekend so I may actually finish Programming 1 by the end of next week.

 

Week 6

I finished Lesson 6 pretty quick, it was fun ! I plan to finish the whole Programming 1 course this week, and then begin a small quick data manipulation project with my mentor. This week, I was able to finish Lesson 7. It was a pretty quick and simple lesson, although I don't know if I'll ever need to use SQL code for my internship. 

 

Here's my SAS badge😁 I'm very proud of it.sas-programming-1-essentials.png


 Next week I will begin my small case study created by my mentor and then it's on to Programming 2.  

 

Week 7

I worked on my case study for a few days; here's some of the code I created ! And the results I made. I am very happy with my work on this. 

data revenuedata;
 	set revenue.smalljetrev;
 TotRev = sum(Rev_Pass, Rev_Cargo); 
 		format TotRev dollar12.;
 	if Flight_Cat = "MOD" then Flight_Cat = "DOM";
 	if Flight_Cat = "NTI" then Flight_Cat = "INT";
run; 

title "SmallJet Managment Reports";
proc print data=sortedrevenue label; 
title2 "Flight Revenue Report";
	var Flight_Cat Flight_Number TotRev Rev_Pass Rev_Cargo;
	format TotRev Rev_Pass Rev_Cargo dollar12.;
	label 
	TotRev="Total Revenue"
	Rev_Pass="Passenger Revenue"
	Rev_Cargo="Cargo Revenue"
	Flight_Cat="Flight Category"
	Flight_number="Flight Number";
	
run; 
title; 

scrnli_10_14_2020_1-50-46 PM.png

 

Tomorrow I'm going to start Programming 2 with my new mentor and I'm really looking forward to that. 

 

dividerLine.png

 

I had a meeting with my mentor on Thursday, I had tried to set up my files before meeting with her, but messed it up. So she helped me fix it and explained to me the concept of PG2; it's basically a deconstruction of Programming 1. I look forward to starting it this week. 

 

Week 8

Programming 2 is weird. I'm not really getting it, and therefore not really enjoying it. I'm sure once I have my meeting with my mentor, she will clear everything up for me, but right now I'm not really sure about what I'm doing or why any of the coding I've been learning is relevant. Hopefully all will be revealed tomorrow... 

 

Update; after meeting with my mentor, I've definitely been put back onto the right track. I finally get what I'm learning now ! My mentor and I went over some examples and she was able to really explain to me the difference between compilation steps and execution steps. She was also able to explain to me that the putlog is essentially just another "debug" step. That's important to me especially because I'm using SAS Studio, and not SAS Enterprise Guide, which I believe has a debugger option. If I'm being honest, sometimes I have a hard time paying attention to the videos provided in the lesson, but having someone there to actually talk me through what I'm doing and why I'm even doing it is very helpful. Next week I plan to get most of the way through lesson 2 !

 

Week 9

I wholeheartedly apologize for the inconsistent updates. School and college applications have been keeping me quite busy ! This week, I finished Lesson 2, I really enjoyed this one ! I just found it so nice and fun to be able to organize again. As you might recall from previous weeks, I've found the organizational aspects of programming the most fun for me personally.

I loved the use of the first and last commands, and being able to reset them when certain values changed. I went through this lesson without having any major confusions, which was great. Hope lesson 3 is just as fun as this one !🙂

 

Week 10

I didn't do anything this week because I was on vacation😅. Tune in next week !

 

Week 11 & 12

Back to the grind ! Lesson 3 is really long... I was able to finish it in these two weeks though and it was alright. I liked some aspects of it, like the character to numeric conversions and vice versa, as well as the string functions. I really didn't like the date intervals, but that's alright because they weren't all that important in the grand scheme of things. I started taking notes on paper about the lessons, I'm not sure if it's actually helping much, but it is helping ring bells in my head. I noticed it definitely helped on the quiz, so I guess they work well ! I'm just using the syntax reviews and writing down what I think I should note or remember.  I still feel like a lot of the stuff I'm learning is over my head though, it's so strange learning all of this on top of all my other school work... I might be losing steam with all of this... Hopefully lesson 4 will pull me out of this funk though and get me more motivated again !

 

Week 13

I am really enjoying Lesson 4 ! I didn't do too much this week because we have been on break but creating custom formats has been really fun for me. I think that taking notes is starting to pay off, I ran into an error with my formatting and was able to resolve it by reading through my syntax notes. 

 

Week 18

It's been over a month since I updated my SAS article and I should feel more bad than I should. Outside factors have sort of sucked away my passion and excitement about my internship. I finished Programming 2 and earned my badge. Currently, I am waiting on my mentor to finish putting together a small case study for me to wrap up PG2. 

 

I found Lesson 5 really fun, my mentor said the lesson is not something most people would initially understand conceptually, but I grasped it really well. My mentor used the example of having everyone's phone numbers listed in one data set, and those must be merged with another data set that contained those peoples ages and heights. This really helped me understand what the whole lesson was about. 

 

Lesson 6 was a bit strange. I didn't really understand the practicality for a DO loop at first. It was only after the practice that I really understood what was going on. DO loops themselves are easy enough, and after practicing with this code, 

data retirement;
    do Year = 1 to 6;
       Invest+10000;
       output;
    end;
run;

title1 'Retirement Account Balance per Year';
proc print data=retirement noobs;
    format Invest dollar12.2;
run;
title;

that I really got what DO loops do. They're more practical for running the same data over and over, and it reminded me of my pre-calculus class last year, where we had to compound interests... I'm very glad I'm not in pre-calc anymore😅

 

Lesson 7 I also found to be really fun, yet conceptually challenging. I understood the TRANSPOSE step, but the manual restructuring using the DATA step was a little hard to grasp. I like how you're even able to restructure data for analysis using SAS though. It's been 

very exciting and fun to learn all of the things you can do using SAS programming. 

dividerLine.png

Week 19

This week, I hope to start on the course Statistics 1: Intro to ANOVA, Regression, and Logistic Regression. I am really looking forward to it !

 

I started doing some work on Lesson 1 and taking notes on the course and I am really enjoying myself. I feel like statistics is right up my alley on what I enjoy learning about. I love drawing conclusions or predicting things based on data. Most of the material I have covered so far is reminiscent of my AP stat course, it's basically review, but to me it doesn't feel like it only because in stat class, it's really difficult to grasp what I'm learning online. Taking notes and having this extra padding with Stat 1 is really making me feel confident for what the rest of this course has to offer. I feel like my AP stat class is helping me with Stat 1 and Stat 1 is helping me with my AP stat class.😁

 

In addition to starting my new course, I also have been given the opportunity to interview Dr. Sharon Jones for one of my honors projects for my internship class ! This is really amazing. She is the CEO and founder of thedot.Counsulting and the nonprofit Dottie Rose Foundation. Through the foundation, she aims to increase the number of women in the STEM field. She's even written a book on SAS Programming called A Recipe for Success Using SAS University: How to Plan Your First Analytics Project. I am really excited to interview her next week. 

 

Week 20

After jumping into my Stat 1 course, meeting with Sharon Jones, as well as prepping for college my plate was really full this week. My interview with Dr. Jones was incredible. Hearing her story and how she got to where she is today was extremely enlightening. Talking with her made me realize that even if you're about to enter adulthood, or even when you're in college, your life is not planned out before you; things can and will change. I find it so fun listening to people in the STEM field. 

 

I've been taking lots of notes on my Stat 1 course and got through Lesson 1. It's definitely more advantageous than my AP stat class. The code isn't anything I can't handle either with my prior work in Programming 1 and 2.

 

Week 21

Plot twist ! We're back to Programming 2 this week. I was able to receive my case study, and spent my week working on that, and starting a bit of Lesson 2 of Stat 1. I would say my case study was pretty simple, I did get stuck on a few parts which I will mention later, but overall having my notes with me was a huge help. I am definitely the type of person that needs to have concepts laid out in front of them, as opposed to being told about them. 

 

I was given two charts; I had to clean them up and merge them. It was really fun and satisfying, here's the code I created.

 

data work.orders_clean;
	set TEST.orders (rename=(product_id=oldID));
	Product_Name=propcase(product_name);
	LastName=scan(customer_name, 1, ',');
	FirstName=scan(customer_name, 2, ',');
	NewName=catx(' ', FirstName, LastName);
	OrderMonth=month(order_date);
	Product_ID=input(oldID, 12.);
	drop oldID;
run;

proc sort data=work.orders_clean;
	by product_ID;
run;

proc sort data=test.products out=work.products_sort;
	by Product_ID;
run;

data work.matches work.nonmatches;
	merge work.orders_clean (in=oc) work.products_sort (in=ps);
	by product_ID;
	if ps=1 and oc=1 then output work.matches;
	else output work.nonmatches;
run;

The last block of code is what got me. I had completely forgotten about the IN= statement and was thoroughly confused when I was given the instructions to create variables using IN=. I'm also horrible at if-then statements. But my awesome mentor was able to clear that up with me😊. Every time I do an individualized code, I feel really accomplished. I want to gather my own data and put it into SAS. Any suggestions on what I should gather ? I'd probably send it to my friends on Google Forms.

 

Week 22

Back to the Stats 1 grind. Learning about ANOVA has been really interesting. The different types of graphs are really cool. I don't really understand the multiple comparison methods, but that's more for SAS to do, and for me to interpret. 

 

I was pretty happy when I was able to write most of this code by myself. 

proc means data=stat1.garlic;
	var BulbWt;
	class Fertilizer;
run;

proc sgplot data=stat1.garlic;
	vbox BulbWt / category=Fertilizer connect=mean;
run;

proc glm data=stat1.garlic plots;
	class Fertilizer;
	model BulbWt=Fertilizer;
	means Fertilizer / hovtest=levene; 
	run;
quit;

However, when I got about halfway through the lesson, the garlic problem was back. For some reason, my controlplot statement isn't working. I even looked at the solution, copy and pasted it, and it's still wacky... I'll have to work on it next week. 

ods graphics;
ods select lsmeans diff diffplot controlplot;
proc glm data=stat1.garlic
		plots(only)=(diffplot(center) CONTROLPLOT);
		class Fertilizer;
		model BulbWt=Fertilizer;
		Tukey: lsmeans Fertilizer / pdiff=all adjust=tukey;
	title "Post-Hoc Analysis of ANOVA - Fertilizer as Predictor";
run;
quit;

title;

 

 

Week 23

Honestly, I never really got back to the issue with the solution, my mentor and I were able to fix the code so it didn't have the warning, but even using the solution, it had a warning. I finished up Lesson 2 this week though, and it was long but went really well. 

Typically when I take a quiz at the end of a lesson, I don't pass the first time, but I passed Lesson 2 with a 90% on my first try. This made me feel really good, because it reassures me that I know what I'm doing. 

 

Week 24

I really loved lesson 3, even though it was short. Regression is something I'm pretty confident in, and I enjoy working with it. Multiple regression was interesting to learn, I don't know if I'm completely confident in it, but I did pretty well on the quiz at the end. At some point, I need to create a LinkedIn profile for my second honors project. Hopefully I'll get around to that sometime soon. 

 

Week 25

Wow, lesson 4 was quite a lesson, I didn't really understand any of it ? But I still got a good grade on the quiz. I understand how the selection methods work, but I'm not really clear on the application or why we even use it. This is something I definitely want to learn more about, it seems pretty interesting. Also, my family just got a puppy, so I've been dedicating more time to watching her than my internship, I'm gonna make sure to find a good and healthy balance between my work and training my dog. 

Week 26

I finished Lesson 5 this week, it was alright, I definitely understood it better than I understood Lesson 4. Collinearity was actually pretty fun. I especially enjoyed myself because the code that was used in some of the steps was what I have previously learned in Programming 2. It made me really excited to see the merge statement again. 

proc sort data=STAT1.ameshousing3 out=STAT1.ames_sorted;
    by PID;
run;
proc sort data=STAT1.amesaltuse;
    by PID;
run;

data amescombined;
    merge STAT1.ames_sorted STAT1.amesaltuse;
    by PID;
run;

title;
proc corr data=amescombined nosimple;
    var &interval;
    with score;
run;

I definitely felt connected because of my prior knowledge (although not that great) to PG2. 

 

Week 27-29

I don't really have much to report. I've just been pedaling along in the statistics course. I haven't been able to make any connections to what I've learned over the past couple of weeks. Soon I'll be finished with the whole course though ! It is exciting. I can feel the senioritis tickling the back of my brain. 

 

Week 30

I finished the course ! Lesson 7 took way longer than I thought it would. The lessons before it were very short, but then 7 took me by surprise and was very long. I enjoyed the logistic regression portion of it. Since I'm on spring break now, I am going to use this time to relax before my case study and visual analytics course. This will be the last leg of my journey !

 

 

Comments

Great to read your tenacity Abrah and your thirst to learn - it will take you far! I look forward to hearing your progress and your data analytics journey. 👍

 

Cheers,

Michelle

@MichelleHomes wow ! Thank you for your nice comment😊

Abrah - I loved reading about your experience with Programming 1!  Good for you for working through the challenging parts and enjoying the fun parts. 🙂 I agree the graphs are awesome.  Can't wait to help out with your Programming 2 experience. 👏

@StaceySyphus I can't wait to work with you further, I'm really looking forward to it !😊

Any first introduction to a programming language is challenging. You are learning a new language with the associated complication that you likely don't have much feel for what the result should be. It does not help that the "native speaker" you are working with isn't terribly interactive.

 

By the time I took my first programming class I had taken classes in three foreign  languages. So the "this is another language with different grammar" was not too daunting.

 

By the time I started learning SAS I had programmed in four languages. So the behavior of the data step was fairly predictable. But the power of the Procedures blew me away. I had written programs to do some of what Proc Means does, or Proc Sort and really appreciated that someone had done the hard work behind the scenes.

 

I do still find that I am uncomfortable working with procedures where I do not understand the math behind them though. But that may be because of my math degree and not liking to "assume" too much about what is going on.

 

Have fun!

@ballardw Thank you so much for the thoughtful comment ! I've found using SAS programming to be a fun yet challenging experience as my first programming language and hope that this experience is able to broaden my knowledge and interests in programming as well as statistics. 

Who is the Founder and also CEO of the SAS Company?

@AshdonG0420 Are you quizzing us? The answer is Dr. Jim Goodnight, of course.

Version history
Last update:
‎04-08-2021 07:36 PM
Updated by:

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

Free course: Data Literacy Essentials

Data Literacy is for all, even absolute beginners. Jump on board with this free e-learning  and boost your career prospects.

Get Started

Article Tags