(In your own scenario, you may need to use a more complicated WHERE statement to filter for the right variables.) In this case, it’s easy – I just need to get the “Type 2” variables. First, I need to identify the ones that I need to convert. Recall from our above strategy that the hard part is renaming the variables in a DO-loop. Using PRCO PRINT to view VARS1, you can easily see that the character variables have Type = 2. I mentioned this utility in an earlier tutorial I will expand on it here by including TYPE in the output data set. Let’s start by obtaining the variables’ names and types from PROC CONTENTS. Use a DO-loop to convert each character variable to numeric format.This second set of numeric variables will have the original names. Create two arrays: one for the character variables, and one for the new, numeric variables that will hold the converted values.Doing this simultaneously is the most difficult step. Rename the original character variables to temporary names.Thus, the trick to this conversion process is three-fold: The real difficulty is ensuring that all of the new variables will have their original names you cannot drop the original variable and rename the new variable easily in the same array. The conversion of multiple variables between character and numeric formats is actually easy it requires just a simple DO-loop. The hard part is actually re-naming the variables I will use this BASKETBALL1 data set as an example, and I will convert POINTS, REBOUNDS, and ASSISTS from character to numeric simultaneously. In this tutorial, I will show a fast way of doing these conversions for many variables at once. data basketball2 ĭespite this success, the above code can be very cumbersome when I need to do this for many variables, and this situation arose in my job recently. Note that I chose “2.” for the length of “JERSEY”, because I know that jersey numbers in the NBA have, at most, 2 digits. I can convert these variables into the correct types using the following code. Thus, for NBA jersey numbers, it is best to save it as a character variable. ( Robert Parish wore this jersey number he won 4 NBA championships and reached the Naismith Basketball Hall of Fame.) If you code “00” as a numeric variable, then it will render as “0”. The National Basketball Association (NBA) allows “00” as a possible jersey number. The jersey number is really a character variable, because its magnitude has no real-life meaning. (You can use PROC CONTENTS to confirm this if needed.) The 3 performance metrics (points, rebounds, and assists) are clearly numeric, but they are currently coded as character. Input jersey points $ rebounds $ assists $ They are hypothetical statistics of 3 players from a basketball game. Let’s consider this small data set in SAS as an example. However, I recently needed to do hundreds of these conversions, so I wanted some code to accomplish this quickly and accurately. Thus, converting them into the correct variable types is a common task, and SAS Note #24590 shows how to do so. If you want to figure out what formats exist for datetime values and what the formatted results look like you could run a little program to pull the formats from the meta data and apply them to a specific datetime value.I often get data that are coded as character, but are actually meant to be numeric.
Or you could use the format E8601DT21.1 and then change the letter T between the date and time to a space instead. If you need the time of day part then you could also use the TOD format. Use DATEPART() to get the date (number of days) from the datetime value and then use the YYMMDD format to generate the 10 character string for the date and then just append the constant string of the formatted zeros. If you don't really care about the time of day part of the datetime value then this is an easy and clearly understand way to convert the numeric variable DT with number of seconds into a new character variable in that style. Or you could use PICTURE statement in PROC FORMAT to build your own format. But it it not hard to build it in steps using existing formats. There is not a native format that produces that string exactly.