NOT ALL QUOTATION MARKS ARE CREATED EQUAL
Sometimes, when I copy and paste my code into SAS Studio, it doesn’t work.
if compress(q23) = “3/4” then q23 = “.75” ;
Just so you know, this does not work because some programs like Word, or even TextEdit on the Mac will replace quotes with some swirly shit (see above) that SAS and other languages don’t read as quotes.
How to tell if your quotations are a problem
The next two lines don’t. If you look closely, those are the evil curly quotes. If you realize this, you can tell at a glance if there is a problem with your code.
Getting rid of text
Okay, I replaced the evil curly quotes, but I still have a problem. The questions are things like,
“What is the area of this shape in square feet”, and let’s say the answer is 240 .
Students answer all kinds of variations of that, like :
- 240 square feet
- The answer is 240
- 240 sq ft
All of these answers are correct but if I just compared them to 240, they would not be equal and be marked wrong. Enter the COMPRESS function.
q3 = compress(Q3,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','l');
The above statement will remove all alphabetic characters from the answer and return just numbers.
The COMPRESS function has three parts –
- the source, which is the variable you want modified, in this case, Q3,
- the characters you want added or removed (the default is removal),
- an optional modifier
In my case, I used the modifier ‘l’ – that is a lower-case L, not a number 1 – because I wanted all of those letters removed if they were lower-case, too. So, I don’t have to type all of the letters of the alphabet twice.
Getting rid of special characters
You can also use the COMPRESS function to get rid of special characters. Say the question is “If tickets are normally $100 and tickets are 50% off, how much does it cost Cassandra for a ticket to the Dead Fleas concert?” Students will enter answers like, $50 or 50. To get rid of the $, simply do this:
q1 = compress(q1, ‘$’) ;
When I’m not teaching statistics or writing about SAS, I’m making video games. We’re doing a Kickstarter campaign to make our bilingual games available everywhere and if you backed us, that would be AMAZING ! Plus you will get cool prizes.