Recently the "SAS Sample of the Day" was a Knowledge Base article with an impressively long title: Sample 42165: Using a stored process to eliminate duplicate values caused by multiple group memberships when creating a group-based, identity-driven filter in SAS® Information Map Studio "Wow," I thought. "This is the longest
English
The dimensions of your graph can affect the aspect ratio, which in turn, can subtly affect the perception of your viewers. When visual perception is of prime importance, the aspect ratio of the graph needs to be adjusted with care. This technique is known as ‘banking’, was introduced by William
On this blog, I've delivered a few tips about using SAS formats to stratify your data values "in place" without having to actually change your data. The most recent example addressed date and datetime variables. My previous examples included simple SAS programs that you can run in SAS display manager
Howdy. Waynette invited me to submit a blog post or two on her behalf while she rests up after a hectic Thanksgiving. Many of you don't have SAS Global Forum 2012 on your short-term radar. After all, Opening Session on April 22 is still almost 5 months away. I know
The other day someone posted the following question to the SAS-L discussion list: Is there a SAS PROC out there that takes a multi-category discrete variable with character categories and converts it to a single numeric coded variable (not a set of dummy variables) with the character categories assigned as
A frequently asked question about the Survival Plot is: "How can I display the 'At Risk' data outside the plot area?". The survival plot rendered by the LIFETEST procedure displays the at risk data inside the plot data area. The reason for this is the potential for varying number of treatment groups. Here
I got an email asking the following question: In the following program, I don't know how many variables are in the data set A. However, I do know that the variable names are X1–Xk for some value of k. How can I read them all into a SAS/IML matrix when
~Contributed by Rex Pruitt, IFSUG Chairman One of the newest SAS users groups has settled on a date, time and place for its first formal get-together. IFSUG (Insurance & Finance SAS Users Group) will meet March 4-6 in the new SAS Executive Briefing Center in Cary, NC. The IFSUG Summit will
I've heard it said that perception is everything, but can you really track and measure customer perception in a way that will allow you to effect change? The answer is yes.
I have previously written about how to create funnel plots in SAS software. A funnel plot is a way to compare the aggregated performance of many groups without ranking them. The groups can be states, counties, schools, hospitals, doctors, airlines, and so forth. A funnel plot graphs a performance metric
In a previous article we discussed how to add axis aligned statistics table to a Lipid graph using GTL. Other graphs such as the Survival Plot also utilize the same technique to display the "at risk" statistics aligned by time or visits along the X axis. Often, we also need to display
I’ve been fortunate to see a lot of the US through my work with SAS users groups. My latest trip was to Fort Worth, Texas, where I saw my first rodeo and attended the South Central SAS Users Group (SCSUG) Educational Forum.
The heatmap is a graphical representation of a table where colors are used to represent the values in the table. This is an effective graphic for finding the minimum and maximum values across the table and may surface patterns in the data. With the addition of the HEATMAPPARM statement to
Here's a quick tip to keep in mind when you write SAS/IML programs: although the SAS/IML documentation lists about 300 functions that are built into the SAS/IML language, you can also call hundreds of functions in Base SAS. Furthermore, you can pass in SAS/IML vectors for arguments to the functions.
If you’ve taken one of my SAS classes you may recall “Mark’s 3 rules of programming”, the first of which is “Lazy programmers are GOOD programmers.” One of the things I love about best about SAS programming is the plethora of functions and shortcuts built into the language, all designed
Halloween night was rainy, so many fewer kids knocked on the door than usual. Consequently, I'm left with a big bucket of undistributed candy. One evening as I treated myself to a mouthful of tooth decay, I chanced to open a package of Wonka® Bottle Caps. The package contained three
Rick Wicklin's blog post on using abbreviations provided a solution for a long standing pain. When writing a new GTL program for simple graph, often the bulk of the code is boiler plate. To create a simple scatter plot of weight by height, you need to type in the following program:
Rick posted a tip today about using abbreviations in the SAS program editor window (often referred to as the "enhanced editor"). Defining abbreviations is a great way to save keystrokes and re-use "templates" of code that you've squirreled away. (One of Rick's readers also picked up on the tip, and
In this blog we will discuss many aspects of the SG Procedures. This article will cover some basic features and workings of the SGPLOT procedure to establish a baseline. The single-cell graph is the work horse for data visualization. From the simple bar chart to the complex patient profiles for clinical
I recently attended The Education Trust’s 2011 National Conference on closing gaps and raising achievement for ALL students. This was my first Ed Trust event and I walked away baffled by the data about the inequities in our education system, and the persistent gaps between the affluent and impoverished. First,
When I moved last year from Denver to the Washington, DC area people told me to prepare myself for the long hours I would spend in my car. I had no idea. It takes forever to get anywhere. Once, during a snowstorm it took me 9 hours to drive 10
Did you know that you can define "abbreviations" in the SAS enhanced editor? These handy little shortcuts can save you a lot of typing. For example, I have an abbreviation for the string _iml. Whenever I type _iml, the editor prompts me to replace those four characters with the following
Here is a little trick to file away. Given a row vector of zeros and ones, thought of as representing a number in base 2, the following SAS/IML statements compute the decimal value of that vector. proc iml; x = {1 0 0 1 1 1}; /* number in base
I've been working with date-time data on a recent project, and I've come across a few SAS programs that have "opportunity for improvement" when it comes time to create reports. (Or maybe I haven't, and I contrived this entire blog post so that I could reference one of my favorite
SAS said, "Hello, San Francisco!" for the Western Users of SAS Software (WUSS) conference October 12-14. The conference was chaired by Kathy Valdes, from SRI, and Ginger Carey, from Carey Consulting, two long time SAS users. With no time for Sittin’ on the Dock of the Bay, we kicked off the event -
One aspect of blogging that I enjoy is getting feedback from readers. Usually I get statistical or programming questions, but every so often I receive a comment from someone who stumbled across a blog post by way of an internet search. This morning I received the following delightful comment on
The Unicode character table contains a vast array of characters and symbols that can be quite useful for making your text more descriptive in your graph. These characters can be inserted into any viewable string that you can define in the GTL or SG procedure syntax. These strings include titles,
If you want to extract values from a SAS/IML vector, use the subscripting operation, such as in the following example: proc iml; x = {A B C D E}; y = x[{1 2 3}]; /* {A,B,C} */ The vector y contains the first three elements of x. However, did you
The display of statistics, aligned with graphical plot of the data, is a common requirement for graphs, especially in the Clinical Research domain. In the previous post on Discrete Offset, I used an example of the Lipid Profile graph. Now, let us use the same example and add the display of statistics in