SESUG 2025 Papers - Index
105 papers. Source: SESUG (SouthEast SAS Users Group) conference proceedings.
| # | Title× | Authors× | Abstract× | Keywords× | Extras | Pages |
|---|---|---|---|---|---|---|
| 1 | "Reproducing the "BEST Format in R | David J. Bosak | The "BEST" format is commonly used in SAS programs. This format constrains the display of a numeric value to a specified width. Depending on the characteristics of the numeric value, it may be rounded or not. For very small or large values, the "BEST" format may display the value in scientific notation. If the value has decimals, the number of decimals shown by "BEST" can change depending on the number of integer digits. The rules concerning the "BEST" format are in fact quite complicated. Is there any way to reproduce the "BEST" format in R? This paper will show you how to do it using a recently added feature of the "fmtr" R package. | e., format statement | 6 | |
| 2 | A Generational Analysis of Mental Health Trends and Risk Factors Using CDC BRFSS Data | Shubham Choudhary, Amit Navare |
This study analyses the CDC's Behavioral Risk Factor Surveillance System (BRFSS) data through a generational lens with Random Forest classification, and provides very accurate predictions of mental health outcomes. Our new 0-100 risk score approach predicted that the older generations reported more days of poor mental health, while younger generations used telemedicine more and use drugs more. There were also differences among generations on some of the key predictors including, but not limited to, substance use, overall health, financial hardship, and social support. The model helps healthcare organizations design appropriate, data driven strategies for multi factor approaches, and generate targeted interventions that combine risk factors, social determinants, and health behaviors. This is fundamentally important since there is a void in the systematic generational analysis of mental health using population surveillance data to inform the implementation of mental health enhancement initiatives, and this has real applications for generation specific service delivery optimization, risk based resource allocations, and technology funding prioritization to better manage mental health outcomes across age cohorts. | insurance risk score, proc hpforest | 14 | |
| 3 | An Overview on Comparing SAS Dates and Times | Patrick Mercer | Working with date fields can often be a source of frustration for programmers at all levels, especially when it comes to making accurate comparisons and calculations. Dates in SAS can be stored and formatted in numerous ways, such as numeric date values or character strings, and understanding these differences is essential for effective data analysis. Misinterpreting date formats or using incompatible types can lead to incorrect results or errors that are difficult to troubleshoot. My poster shares ways to simplify the process by exploring how to handle the various formats and representations of dates effectively. We will compare numeric versus character date fields, discuss the differences between date and DATETIME variables, and cover best practices for defining appropriate lengths, formats, and informats. By untangling the complexities of SAS date and DATETIME concepts, this presentation will equip aspiring programmers with the tools needed to perform accurate date comparisons confidently, ultimately transforming a common source of programming frustration into a powerful feature of their data processing toolkit. |
date variable, character variable | 7 | |
| 4 | AP Statistics and SaS | Immanuel Pulavarti | This paper explores the integration of SAS (Statistical Analysis System) software into the AP Statistics curriculum to promote a deeper understanding of statistical concepts and data analysis. By leveraging the power of SAS, students gain practical experience with real-world data, enhancing their ability to perform descriptive and inferential statistical procedures such as hypothesis testing, confidence intervals, regression analysis, and probability modeling. The use of SAS encourages active learning by allowing students to visualize data distributions, automate calculations, and interpret complex outputs. Through hands-on coding and data manipulation, students develop computational thinking and analytical skills that are increasingly vital in academic and professional environments. Incorporating SAS into AP Statistics bridges the gap between theoretical knowledge and applied statistics, better preparing students for college-level coursework and future careers in data science and related fields. | proc step, proc sql, where statement, proc freq, proc sort, data science, regression analysis, proc means | 8 | |
| 5 | Automate in a DASH with SAS: Time Saving Techniques for Building Quality Improvement Dashboards | Shavonne J. Standifer | Building programs that leverage the analytic and reporting powers of SAS reduce the time to solution for critical tasks. This paper discusses, through example, how Base SAS tools, such as FILENAME, MACROS, and ODS combined with the "built in scheduler" housed in SAS Enterprise Guide can be used to automate the process between raw data to dashboard view quickly and efficiently. This paper is divided into two main parts. In the first part, we discuss how to use scripting language to bring data from a file location into the SAS environment, how to build programs that clean and subset the data, and how to transform the process with a MACRO. In the conclusion, we will discuss how to use SAS procedures and the ODS to transform the resulting data into a quality improvement dashboard view that can be set to automatically run and send to team members at a scheduled time. |
sas enterprise guide, raw data, filename statement, macro variable, options statement, call symput, proc freq | 10 | |
| 6 | Becoming Trilingual: A Story of a SAS Programmer Learning R and Python | Aaron Brown | This paper serves primarily as an introduction and encouragement to SAS programmers who are interested in learning another language. Using the free and open-source R and Python languages as examples, we discuss learning these languages and give an example of how to write the same (relatively simple) program in SAS, R, and Python. We also discuss some of the more powerful tools to leverage multiple languages, although a thorough discussion is beyond the scope of this paper. | proc import, proc step, proc freq, raw data, sas programmer | 10 | |
| 7 | Behind the Scenes with SAS Catalogs: Formats, Macros, and More | Tejalkumari Tailor | SAS catalogs play a crucial role in organizing formats, macros, and other components that support efficient and consistent programming - particularly in clinical trials where standardization is essential. However, many programmers aren't fully aware of how catalogs work or how to manage them effectively. This session will introduce the fundamentals of SAS catalog structure, demonstrate how to create and retrieve catalog entries, and offer practical tips for moving catalogs between projects. You'll learn how catalogs can reduce redundancy, simplify code management, and improve collaboration across programming teams. Whether you're just beginning to explore SAS catalogs or looking to optimize your existing processes, this presentation will provide you with the tools and insights needed to make the most of this powerful resource. | catalog, catalog entry, stored macro, cpu time, clinical trial, proc step, proc catalog, proc format, macro catalog, sas library, macro definition, adverse events, sas log | 13 | |
| 8 | Best Practices for Graphic Design & Color Use, Plus Uncommon Data Art for Data Science | LeRoy Bessler | My striving to get the best out of SAS graphics since 1981 has inspired my very long list of design principles for communication-effective data graphics and color use. Today let me show you some of them. What is The Best Way to get beyond the defaults? I will take you past The Familiar to The Uncommon, and in any case to The Best. | data science, data analyst, sas output, sas programmer, excel | 108 | |
| 9 | Beyond Macro - Data-Driven Programming with CAS in SAS Viya | Mark L. Jordan | With the adoption of SAS Viya, accelerating processing in CAS is becoming more common, and CAS speaks CASL. Seasoned SAS coders often use SAS macros to produce data-driven programs, automating tedious programming tasks. When working with CAS from the SAS Compute Server, it's important to know where, when, and how the CASL that executes is generated. Whatever your experience level, the interactions between SAS code, CASL, and Macro can be intimidating. This presentation aims to demystify that process. In this presentation I'll discuss: - A brief review of code tokenization and macro triggers on the SAS Compute Server. - A brief introduction to CASL and CAS actions, including the effect of macro triggers in CAS programs. - An introduction to CASL variables and data types, including arrays, dictionaries, and result tables. - Practical techniques for advanced data-driven programming in CASL | proc step, proc sql, cas action, do over, libname engine, macro definition, macro facility, implicit sql pass-through, macro trigger, proc datasets, proc print, cas, sql pass-through, sas programmer, macro variable | 21 | |
| 10 | Beyond the Histogram: Moment-Ratio Diagrams for Modeling Distributions | Rick Wicklin | You've collected data, and now you're examining a histogram. You want to fit a probability distribution to the data, but you're unsure which distribution might serve as an effective model. The moment-ratio diagram is a powerful graphical tool that can guide this process. By plotting the sample skewness and kurtosis of your data on the diagram, you can identify potential distributional models. This presentation demonstrates: - How to construct a moment-ratio diagram using SAS 9 and SAS Viya. - How the diagram connects well-known probability distributions and families of flexible distributions. - How bootstrap methods can help assess which distributions are plausible candidates. - How to use a moment-ratio diagram to design a simulation study. Each topic is accompanied by SAS code that you can apply to your own data. | do loop, sas viya | 1 | |
| 11 | Breaking Down Monolithic ETLs: Best Practices to Optimize Code Generation in SAS DI Studio and Enhance Oracle Database Performance | Osmel Brito, Angye Rivero |
For over 15 years, we have relied on SAS Data Integration Studio to develop and maintain robust ETL and data pipeline solutions across industries. As data volumes have grown and performance demands increased, we have encountered the natural evolution of DI Studio-generated jobs becoming monolithic, complex, and increasingly difficult to maintain and optimize-especially when integrating with high-performance databases like Oracle. This paper shares our journey in breaking down monolithic ETL jobs into modular, reusable components using macro-based programming and design patterns that complement SAS DI Studio's metadata-driven environment. We present a set of best practices that improve code maintainability, reduce redundancy, and enhance troubleshooting and reusability. Additionally, we explore how certain code-generation techniques can negatively impact Oracle database performance and show how simple architectural decisions-such as leveraging pushdown optimization, proper index usage, and transactional control-can drastically improve runtime and scalability. The session will provide real-world examples, lessons learned, and actionable strategies that attendees can adopt to modernize and optimize their own DI Studio implementations. Whether you're inheriting legacy DI code or starting fresh, this paper will equip you with the tools and perspective to transition from fragile ETLs to efficient, scalable, and maintainable data integration pipelines. | scd type 1, sas data integration studio, oracle, data pipeline, macro definition | 13 | |
| 12 | Building Complex Graphics from Simple Plot Types | Dan Heath | There are many types of graphics, such as survival plots, adverse event plots, and forest plots, used to report clinical data. However, many of these graphics might not be available as a simple request. Even if they are available, there can be many variations on these graphics, and the reporting requirements can be different from one company to another. In this presentation, I want to show you how to construct these types of graphics by combining simple plot types, sometimes in very creative ways. We will discuss how to think about a graph as the sum of its parts. This will empower you to create these types of graphics in whatever form you need. | waterfall chart, forest plot, scatter plot, bar chart, kaplan-meier plot, swimmer plot, complete response, procedures | 17 | |
| 13 | CDISC Genius AI: PoC on how to interact with CDISC Library API using Natural language | Saikrishnareddy Yengannagari | Is it possible to interact with CDISC Library API using Natural Language in plain English. Answer is Yes, we can. This paper presents a web application that allows users to query SDTM variable information using natural language by utilizing AI-driven natural language processing (NLP). Users can ask questions like "Tell me about AESER" or "What is VSTEST?" through the app. and to obtain accurate data, the AI extracts the name of the relevant variable. In addition, the application enables the generation of an entire SDTM specification from the SDTMIG version that is supplied, such as SDTMIG v3.4. After that, it automatically creates a sheet of specification data in EXCEL that can be downloaded from the CDISC API. This solution demonstrates the effectiveness of combining AI with API data retrieval to simplify clinical data specification and access, providing researchers and developers with a streamlined, automated procedure. |
macro definition, statistical programmer, clinical sas, sas programmer, proof of concept, cdisc | 9 | |
| 14 | Code Hard and Put away Wet: Replacing Hardcoded SAS Software Quality Checks with Data-Driven Design and Defensive Programming Techniques That Validate Code and Control Data | Troy Martin Hughes | You wouldn't ride your pony hard and put her away wet, so why subject your SAS software to the same ill treatment?! Defensive programming describes a risk management strategy that aims to identify threats to software functionality and/or performance before they occur and, where possible, to identify pathways to programmatically mitigate those risks (or to communicate realized threats to stakeholders). This talk introduces various defensive programming techniques that can be implemented before software executes, such as verifying SAS program file state (i.e., availability, accessibility) and program file metadata (e.g., FILENAME, checksum, create date, version). Data-driven software design further espouses the reality that "software" comprises not only code but also the underlying control data that drive that code's functionality and flexibility. Thus, defensive data-driven design requires a fuller risk management strategy that evaluates risks not only to code but also to control data, including lookup tables, control tables, configuration files, and other control files. Finally, although not considered to be "software," domain data sets and other data sources can be no less essential to ensuring software success, so the state and quality of these transactional data can be evaluated as well. |
exception handling, proc fcmp, sas base, data validation rules, macro variable, proc step, data cleaning, macro definition | 8 | |
| 15 | Comparing analysis method implementations in software (CAMIS) | Brian K. Varney | Several discrepancies have been discovered in statistical analysis results between different programming languages, even in fully qualified statistical computing environments. Subtle differences exist between the fundamental approaches implemented by each language, yielding differences in results which are each correct in their own right. The fact that these differences exist causes unease on the behalf of sponsor companies when submitting to a regulatory agency, as it is uncertain if the agency will view these differences as problematic. In its Statistical Software Clarifying Statement, the US Food and Drug Administration (FDA) states that it "FDA does not require use of any specific software for statistical analyses" and that "the computer software used for data management and statistical analysis should be reliable." Observing differences across languages can reduce the analyst's confidence in reliability and, by understanding the source of any discrepancies, one can reinstate confidence in reliability. | data science, regression analysis, proc mixed, sample, imputation | 4 | |
| 16 | Craft Your Career as a Statistical Programmer: Opportunities and Challenges at CROs vs. Pharmas | Xiao Xiao | As Statistical Programmers (SPs), we are presented with a wide range of opportunities in the pharmaceutical industry. Throughout our careers, our paths may at times diverge or converge. With numerous options available, how can we identify the direction that best aligns with our goals and strengths? Drawing on the experiences of others can provide valuable insights to help us effectively plan and shape our career trajectories. This paper is based on the author's experiences and observations as a mid-career professional, providing a comparative analysis of statistical programming in two distinct settings: Contract Research Organizations (CROs) and pharmaceutical companies (Pharmas), specifically from the perspective of in-house employees. The discussion will focus on the similarities and differences between these two environments in terms of work content, work approach, work styles, personal development, and work-life balance. | clinical programming, clinical research, clinical trial | 6 | |
| 17 | Creating Custom Excel Spreadsheets with Built-in Autofilters Using PROC REPORT and ODS EXCEL | Kirk Paul Lafler | Spreadsheets have become one of the most popular and successful data tools ever created, with current estimates showing more than 750 million EXCEL users worldwide. Their widespread adoption can be attributed to simplicity and ease of use, which make them accessible to a broad audience. Over time, additional features have expanded the functionality and value of spreadsheets, including collaborative capabilities, customization, data manipulation, visualization techniques, mobile accessibility, automation of repetitive tasks, integration with other software, advanced data analysis, and filtering capabilities. This paper focuses on one of these features: filtering with autofilters. Autofilters allow users to quickly find data of interest by making selections from lists of text, numeric, or date values. An example application will be presented that demonstrates how to create a custom EXCEL spreadsheet with built-in autofilters using the SAS Output Delivery System (ODS) EXCEL destination and the REPORT procedure. |
excel, proc report, proc step | 6 | |
| 18 | Creating DOCX Tables and Listings using Office Open XML from SAS | Eric Qi, Suhas R. Sanjee |
Currently we rely heavily on RTF technology to create tables and listings. Microsoft has transitioned away from RTF in favor of the XML-based Office Open XML (DOCX) format as the default standard for its Office suite. DOCX is based on the Office Open XML standard, which is a modern, internationally-recognized standard for Office documents. DOCX format offers better long-term compatibility and interoperability with other modern Office productivity software. The DOCX format also offers superior support for structured documents. SAS can support generation of DOCX files using ODS. However, this approach doesn't meet all the requirements of our stakeholders. It lacks the level of customization needed to accurately control page breaks and create non-editable tables, which are necessary features to prevent accidental edits. In this paper, we describe an efficient approach using Office Open XML framework, SAS macros and Linux commands to create non-editable tables in DOCX format. A DOCX file consists of multiple XML files compressed into a single package. Using SAS, we can create an XML file with content extracted from a dataset, which can then be combined with other parts of the DOCX package to produce a complete DOCX file. This not only modernizes our table creation programs but also eliminates the current complex conversion step required to render RTF tables non-editable. |
adverse events, adverse event summary, clinical trial, dataset | 11 | |
| 19 | Dashboards Made Easy Using SAS Software | Kirk Paul Lafler | Organizations worldwide develop business intelligence and analytics dashboards-often referred to as enterprise dashboards-to display the status of point-in-time metrics and key performance indicators (KPIs). When designed effectively, dashboards integrate real-time data from multiple sources to highlight critical insights through numbers, tables, statistics, metrics, performance scorecards, and other essential content. This paper explores the essential rules of "good" dashboard design, common metrics used in dashboards, and the application of best-practice programming techniques to ensure dashboards are quick to build, efficient to maintain, and easy to use. Using SAS software, attendees will learn practical programming techniques to create real-world dashboards with Base SAS tools including PROC SQL, macros, the Output Delivery System (ODS), ODS HTML, ODS EXCEL, ODS Layout, ODS Statistical Graphics, PROC SGPLOT, PROC SGPIE, and other SAS technologies. |
proc step, proc report, excel, proc freq, proc sgplot, proc format, proc sort, proc univariate, title statement, end, proc template, order by, user-defined format, key performance indicator, output delivery system, business intelligence, proc contents, proc sql | 42 | |
| 20 | Data Diagnostics with Base SAS | Mark L. Jordan | When you gain access to new data sources, it's important to familiarize yourself with the data, and then clean and validate it before conducting analysis, reporting, and modeling. The data may include records that violate business rules, non-standard casing, spellings, non-standard abbreviations for text values, or numeric outliers. This hands-on workshop teaches you how to use PROC SQL, PROC SGPLOT, PROC FREQ, and PROC FORMAT to generate reports useful for data profiling. You will then use PROPCASE, UPCASE, and PRX functions to standardize character data. The presentation includes an introduction to regular expressions. We'll also learn how to use PROC SUMMARY and the DATA STEP to automate identification and isolation of rows containing numeric outliers. And finally, we'll use constraints and audit trails to easily identify data that does not conform to business rules (thanks to Ron Cody, who taught me this technique). This workshop is a "bring your own SAS and device" session. The set up assumes you will be using SAS on Demand for Academics (SoDA). Please registerforyour free account before the session. In SoDA, you can enroll in this course using these specifics: Course Name: Data Diagnostics with Base SAS Level: Undergraduate Institution: SAS Institute Inc. Created: 2024-09-12 Course Code: e0b02ef2-9ae1-476c-bf0e-cea411528f18 Description: How to diagnose and clean data using Base SAS |
proc step, missing value, outlier, constraint, key, proc freq, audit trail, data validation rules, sas base | 38 | |
| 21 | Dating for SAS Programmers | Joshua M. Horstman | Every SAS programmer needs to know how to get a date... no, not that kind of date. This paper will cover the fundamentals of working with SAS date values, time values, and date/time values. Topics will include constructing date and time values from their individual pieces, extracting their constituent elements, and converting between various types of dates. We'll also explore the extensive library of built-in SAS functions, formats, and informats for working with dates and times using in-depth examples. Finally, you'll learn how to answer that age-old question... when is Easter next year? | date variable, sysdate9, datetime, time, macro variable, date and time functions, datepart, automatic macro variable, user-defined format, dhms, sas programmer, options statement, macro function | 13 | |
| 22 | Determine the Dimensionality of Shared Trauma Posttraumatic Professional Growth Inventory-Modified Using Factor Procedure and Parallel Analysis | Abbas S. Tavakoli, April Hutoo, Phyllis Raynor |
The Shared Trauma Posttraumatic Professional Growth Inventory-Modified (STPPG) is a 17-item, Likert-type scale developed to assess trauma exposure among mental health professionals. The original STPPG consisted of a 14-item Likert-type scale, including three subscales: Technique-Specific Shared Trauma, Personal Trauma, and Professional Posttraumatic Growth. This scale highlights the reciprocal effects of shared trauma and aligns with established measures of posttraumatic stress, secondary trauma, shared trauma, and posttraumatic growth. This study employed parallel analysis to examine the dimensionality of the STPPG. Parallel analysis, utilizing a SAS macro and the "parallel" option in PROC FACTOR, was conducted to assess the dimensionality of the Perspectives of Faculty Caring. Exploratory factor analysis was performed using maximum likelihood estimation, squared multiple correlations, and Promax rotation. The analysis indicated that the STPPG has either two or three meaningful underlying factors. The rotated factor pattern showed positive loadings for all 17 items, with factor loadings ranging from 0.33 to 0.78. A positive correlation was found between the three factors, with correlations ranging from 0.58 to 0.77. Internal consistency was assessed using Cronbach's alpha, scale reliability coefficient being 0.89. Subscale reliability ranged from 0.73 to 0.83. Overall, parallel analysis proved to be an effective method for determining the dimensionality of the STPPG. |
correlation, proc factor, proc step, factor analysis, standard deviation, scree plot, regression analysis, pearson correlation, factor loading, macro definition, proc freq | 10 | |
| 23 | DOT My SAS Program | Ahmed Al-Attar | Illustrate an enhanced analysis cutom-developed macros that allows Base SAS 9 users to analyse their SAS programs and produce data flow diagrams about the data set(s) being used including their columns (data Lineage). The presentation will explain how the code works in more details and how to use it within your own programs. This is an expantion/customization to technique that was originaly presented by Philip Mason at SAS Global Forum 2017. | proc step, proc means | 10 | |
| 24 | Easily Turn Your Automated Explanation into a Predictive Model | Danny R. Modlin | The Automated Explanation in SAS Visual Analytics is a powerful and easy way to start your journey into building predictive models. We'll start by creating an Automated Explanation to analyze our data and pick up on key drivers that appear. We will then easily move into building a predictive model using SAS Visual Statistics. Data Scientists and Business Analyst will see how easy it is to take that next leap in their data analysis. Code will not be harmed, examined, nor executed during this presentation. | response variable, logistic regression, account activity, logistic distribution, regression analysis, sas viya | 21 | |
| 25 | Efficacy + Safety in Phase 1/2 Immunotherapy Oncology Trials: OBD vs. MTD | Ron Smith | Traditionally, the purpose of having a Phase I / Phase 2 dose-finding design in cancer clinical studies has been to find the Maximum Tolerated Dose based solely on the toxicity of the study drug. Traditional designs, considering a Dose Limiting Toxicity, implicitly assumes a monotonically increasing relationship between dose and response efficacy. However, for targeted investigative drug products, few toxicity affects may arise prior to the most efficacious dose.This challenges the conventional principle of "more is better until toxic" . Instead, the Optimal Biological Dose, which is defined as the lowest dose with the highest rate of efficacy while safe, is a more appropriate endpoint. In this presentation we will discuss the use of Bayesian Optimal Interval (BOIN) algorithms in finding the Optimal Biological Dose in Phase 1 or combination Phase 1/2 clinical trials. The review of the types of drugs that will produce low-dose high-efficacy treatment outcomes will be followed by a brief introduction to the | dose, clinical trial, phase i, data visualization, binomial distribution | 8 | |
| 26 | Efficiency Techniques in SAS 9 | Stephen B. Sloan | Using space and time efficiently has always been important to organizations and to programmers in general and to SAS programmers in particular. We want to be able to use our available space without having to obtain new servers or other hardware resources, and without having to delete variables or observations to make the SAS data sets fit into the available space. We also want our jobs to run more quickly both to reduce waiting times and also to ensure that scheduled job streams finish on time and that successor jobs are not unnecessarily delayed. Internal mainframe billing algorithms have always rewarded efficiency. As we move toward cloud computing efficiency will become even more important because the billing algorithms in cloud environments charge for every byte and every CPU second, putting an additional financial premium on efficiency. Sometimes we are in a hurry to get our jobs done on time, so we don't initially pay attention to efficiency, sometimes we don't know at the start of a project how much time and space our jobs will use (and the important time is the time allocated to our assignment), and sometimes we're asked to go into existing jobs and make changes that are seemingly incremental but can cause large increases in the amount of space and/or time that is required. Finally, there can be jobs that have been running for a long time and we take the attitude "if it ain't broke, don't fix it" because we don't want to cause the programs to stop working, especially if they're not well-documented. With a reasonably good knowledge of SAS Base, there are things we can do that can help our organizations optimize the use of space and time and run more quickly without causing any loss of observations or variables and without changing the results of the programs. | proc step, character variable, numeric variable, dataset, proc means, proc sort, by group processing, missing value, proc contents, proc freq, sas log, length statement, proc sql, rename statement | 9 | |
| 27 | Enhance flexibility and variability by utilizing an Intermediate Dataset when developing the ADaM Efficacy Dataset in Vaccine Studies | Edward Boykis | This paper outlines the steps involved in developing the Efficacy Analysis ADEFF Dataset for vaccine studies by generating the intermediate dataset and subsequently using it to derive efficacy endpoints. This method allows for straightforward customization of endpoints. The significant advantage of this approach is that it gathers all essential symptoms, indicators, and dates into a single intermediate dataset, enabling the most efficient, rapid, and traceable derivation of endpoints. This capability enables programmers to generate efficacy endpoints in a standardized and consistent manner, ensuring accuracy and efficiency. This article provides comprehensive explanation, accompanied by a data flow diagram and the code snippets. | adam dataset, adverse events, efficacy summary, cdisc | 6 | |
| 28 | Enhanced Reporting Traceability: An R Shiny Application for Live Dependency Tracking and SAS Code Execution | Tongda Che, Laura Frederick, Peng Wan |
In clinical trial analysis, managing complex dataset and code dependencies is crucial for ensuring traceability and compliance with regulatory guidelines. Traditional methods of tracking these dependencies often require significant manual effort, leading to potential errors and inefficiencies. This paper presents an innovative R Shiny application designed to streamline dependency tracking among ADaM (Analysis Data Model) datasets, SAS code, and output results. The application provides a dynamic, real-time view of all outputs associated with a given study protocol. Utilizing log files, it identifies and displays all relevant ADaM datasets and macro programs linked to each output, thereby enhancing transparency throughout the development process. Additionally, the app uses file timestamps to automatically flag outdated files, significantly reducing the reducing the risk of errors and improving the accuracy of final outputs. With integrated API functionality, users can effortlessly rerun any outdated dependency programs with a single click. Developed using base R , the Tidyverse, and the Shiny package, this application features a user-friendly interface for protocol path input and file selection, along with seamless integration with SAS through API connections. This tool not only enhances compliance with traceability requirements but also optimizes the efficiency of clinical trial analysis. | adam dataset, clinical trial, excel, cdisc | 11 | |
| 29 | Enrollment Projections Application: Empowering Data-Driven Enrollment Strategies | Raj Bhosale | Accurate enrollment projections are vital for higher education institutions to strategically plan for resource allocation, academic offerings, faculty recruitment, and financial sustainability. This paper presents the development and implementation of the Enrollment Projections Application, a robust, web-based platform designed to support data-driven enrollment strategies. By integrating multiple technologies including PHP for the user interface, Microsoft SQL Server and Oracle Databases for data storage and retrieval, and SAS and Python for data processing and advanced analytics, this application allows institutional leaders to simulate enrollment prediction with precision. The system enables real-time access to historical trends and program-level insights, enhancing forecasting accuracy and decision-making. The paper details the technical architecture, data integration approach, and predictive modeling capabilities of the application. It also discusses use cases where this solution has empowered university leadership to proactively respond to shifting enrollment patterns, aligning institutional priorities with student demand and external policy changes. | proc reg, predictive analytics, regression analysis, sql server | 6 | |
| 30 | Ensure complete raw data to SDTM mapping: a SAS macro approach for quality control | Cally Davidson, Eric Howard |
Accurate and complete mapping of raw clinical data to Study Data Tabulation Model (SDTM) domains is essential for high-quality regulatory submissions. A common oversight occurs when raw datasets contain observations that appear only later in the study, such as pregnancy data within the RP domain, leading to incomplete or missing SDTM domains if initial mapping was based on earlier data snapshots. This paper highlights a SAS macro, called search_raw, developed to automate the quality control (QC) process by ensuring all relevant raw data sources with observed records are mapped to SDTM domains. The macro checks for the presence of data from raw sources in the .SAS logs and summarizes SDTM input source datasets, while flagging any unmapped data streams. The RP domain serves as a case study, illustrating how subjects with no pregnancies reported early in the study can be missed if mappings aren't revisited. By automating these checks, the macro enhances traceability, reduces manual review, and ensures complete and compliant SDTM deliverables. | sdtm domain, sdtm programming, raw data, macro definition, excel, clinical data, quality control, cdisc | 8 | |
| 31 | Exploring the World of Metadata with SAS DICTIONARY Tables and SASHELP Views | Kirk Paul Lafler | The DICTIONARY tables and SASHELP views provide SAS users with a powerful and flexible way to explore and manage metadata within any session. By offering direct access to details about system options, libraries, datasets, columns, indexes, and more, they serve as an indispensable resource for understanding and navigating the SAS environment. Whether applied for troubleshooting, auditing, automating processes, or building metadata-driven applications, these tools give users immediate insight into the structure and content of their data. With practical knowledge of how to query and leverage DICTIONARY tables and views, SAS professionals can improve efficiency, enhance data governance, and make smarter decisions in their everyday programming tasks. | dictionary tables, proc sql, proc step, options statement, select | 7 | |
| 32 | Extending SAS OnDemand for Academics with Python Integration via SASPy | Zhongshan Cheng | SAS OnDemand for Academics (ODA) enables free access to SAS software for academic users via a web browser. Despite its convenience, the platform limits advanced users by disabling X commands, which are commonly used for tasks like file I/O and local scripting. SASPy, a Python package developed by SAS Institute, enables local Python environments to interface with remote SAS servers, including ODA. However, it is difficult for users to integrate SASPy with SAS ODA across multiple different computer systems, including macOS, Linux and Windows systems. This severely affects the popularities of both SAS ODA and SASPy. To address this issue, this paper provides platform-specific installation and configuration instructions for Windows, macOS, and Linux systems, along with customization tips to enhance HTML output formatting and incorporate user-defined SAS macros hosted on GitHub that are specifically written to handle compressed large data sets. By combining the flexibility of Python, running system commands via Python, the interactivity of JupyterLab as well as its integration with VScode and GitHub Coplilot for generating SAS codes using artificial intelligence, and the statistical power of SAS, this setup empowers advanced SAS ODA workflows for research and instruction. | macro definition, ods html, artificial intelligence | 21 | |
| 33 | Five Easy Ways to Make Your SAS Code Run Faster | Mark L. Jordan | Don't you hate waiting for results after submitting your SAS programs? I sure do! In this presentation, I'll compare the impact on processing speed of several techniques we choose from every day. We'll try it using both SAS datasets and database data so we can get a good idea of what produces the fastest result under most frequently encountered circumstances. My hope is that together we can agree on 5 "thumb rules" we can use to ensure our code runs fast and efficiently when we don't have the time for formal benchmarking. | proc sql, sas base, proc step, type i error, unique key | 18 | |
| 34 | Forecasting the U.S. Home Vacancy Rate using ARIMA | Joseph Maina, Abdelmonaem Jornaz |
This study forecasts the U.S. home vacancy rate, a key indicator of housing market health, using Federal Reserve Bank of St. Louis (FRED) data from 1986 to 2024. The current homeowner vacancy rate stands at 1.1% in Q1 2025. The ARIMA model captures temporal patterns, while machine learning algorithms such as regression analysis, random forests, and gradient boosting models non-linear relationships with economic, housing, and demographic factors. Integration of these models enhances predictive performance, optimized using the Akaike Information Criterion (AIC) and Root Mean Square Error (RMSE). This provides insights on economic indicators, housing supply and demand, and demographic factors, through the performance optimization of the models. The forecasts enable data-driven decisions for policymakers, real estate professionals, and urban planners, supporting housing development, supply chain planning, and related sectors like Heating, Ventilation, and Air Conditioning (HVAC). This research aims to promote economic stability through data-driven decisions. | estimate, correlation | 12 | |
| 35 | From Dynamic to Lexical: A Comparative Exploration of Scoping Rules in SAS and R | Chen Ling | Variable scoping dictates how and where variables are accessible within programming languages, playing a crucial role in code efficiency and organization. This paper examines the distinct scoping rules in SAS and R, focusing on SAS's dynamic scoping and R's lexical scoping. In SAS, dynamic scoping utilizes symbol tables, resolving variables at runtime by dynamically searching through active macro layers. R, in contrast, employs lexical scoping, using environments to resolve variables based on the structure in which functions are defined. Illustrative examples highlight the differences between these scoping strategies, showcasing their impact on code behavior. Additionally, the paper outlines methods for inspecting variables in SAS's symbol tables and R's environments, offering practical insights for debugging and optimization. Strategies for controlling variable scoping in both languages are discussed, enhancing code precision and reliability. This exploration equips programmers with critical understanding to optimize variable management, improving their programming practices in SAS and R. | symbol table, macro variable, global symbol table, local symbol table, macro definition | 8 | |
| 36 | From Muggles to Macros: Transfiguring Your SAS Programs With Dynamic, Data-Driven Wizardry | Joshua M. Horstman, Richann J. Watson |
The SAS macro facility is an amazing tool for creating dynamic, flexible, reusable programs that can automatically adapt to change. This presentation uses a series of examples to demonstrate how to transform static "muggle" code full of hardcodes and data dependencies by adding macro language magic to create data-driven programming logic. Don't hardcode data values into your programs. Cast a vanishing spell on data dependencies and let the macro facility write your SAS code for you! | macro variable, proc sql, variable list, macro facility, proc step, automatic macro variable, macro loop | 52 | |
| 37 | Fuzzy Matching with SAS PROC SQL | Mark L. Jordan | We must often join data from disparate data sources where matching by primary key is not possible. This paper addresses fuzzy matching techniques that can help get your data ready for analysis. In this presentation, I discuss and demonstrate usig PROC SQL to: - Standardize values for cleaner matches - Identify exact matches - Conduct fuzzy matching using traditional SAS functions, including:SOUNDEX()SPEDIS()COMPLEV()COMPGED() - Generate and use SAS Data Quality match codes |
proc sql, sas base, proc step, type i error, unique key | 16 | |
| 38 | Generate Docs for your SAS Project using VS Code, SASjs and Doxygen | Ahmed Al-Attar | The goal of documentation is to provide an organized collection of programs and macros and exposing what they do, the parameters they use and more. Overtime the documentation is prone to get out of date and unrepresentative of the latest version of the code! That's where Doxygen comes into play. Doxygen is free open-source software, released under the terms of the GNU public license version 2, and can run under Linux, MacOS or Windows, just like VS Code. SASjs is an MIT open source, free for commercial use, opinionated "batteries included" framework when it comes to building, linting, deploying, testing and documenting SAS projects and programs. This paper will focus on SASjs's ability to generate HTML documentation from SAS program headers, via using SASjs VS Code extension. | 7 | ||
| 39 | Geocoding with the Google Maps API: Using PROC FCMP To Design User-Defined SAS Subroutines That Call User-Defined Python Functions That Geocode Coordinates into Addresses, Calculate Routes, and More! | Troy Martin Hughes | Software interoperability describes the ability of software systems, components, and languages to communicate effectively with each other, and must be prioritized in today's multilingual and open-source development environments. PROC FCMP, the SAS Function Compiler, enables Python functions to be wrapped in (and called from) SAS user-defined functions (and subroutines), and the full panoply of SAS environments supports FCMP-including SAS Display Manager, SAS Enterprise Guide, SAS Studio, SAS Viya, and the latest Cary show pony, SAS Workbench. Productivity and the pace of development are maximized when existing open-source code-such as Python user-defined functions-can be run natively from a Python interactive development environment (IDE) rather than having to be needlessly recoded into the Base SAS language. This text demonstrates SAS and Python user-defined functions that collaboratively call the Google Maps Platform APIs to geocode street addresses into latitude/longitude coordinates, and to calculate driving distances between locations. The scenarios in this text demonstrate the application of the Google Maps Platform for clinical trials research, and the technical concepts are adapted from Chapter 8 of the renowned SAS Press book: PROC FCMP User-Defined Functions: An Introduction to the SAS Function Compiler. (HUGHES, 2024) |
proc fcmp, clinical trial, sas function, proc step, output | 14 | |
| 40 | Getting Started with Perl Regular Expressions in SAS: From Basics to Practical Use | Pratap Singh Kunwar | Regular expressions (RegEx) offer a powerful way to find, extract, and manipulate text patterns-going far beyond what standard SAS character functions can do. This session is designed for beginner and intermediate SAS users who want to build confidence and skill in applying RegEx to real-world programming challenges. We'll start with the fundamentals, introducing key concepts like character classes, metacharacters, and quantifiers. From there, we'll explore how to build and use regular expressions for tasks such as validating formats, cleaning messy strings, and performing advanced search-and-replace operations. Through step-by-step examples, you'll see how RegEx can simplify code, reduce manual text handling, and solve problems that would otherwise require complex logic. You'll also learn tips for troubleshooting patterns and writing expressions that are both powerful and readable. By the end of the session, you'll have the tools to start using regular expressions confidently in your SAS programs-and transferable knowledge that applies to other languages like Python, Perl, and JavaScript. | proc sql, character functions | 32 | |
| 41 | Give it a ReST! Working with APIs in SAS | Mark L. Jordan | Application programming interfaces, or APIs, provide a way for diverse computer programs and systems to reliably communicate with each other. Representative State Transfer (ReST) APIs are the most common type of API used for communication via hypertext transfer protocol (HTTP). Base SAS has robust tools baked in for working with ReST APIs. This paper includes a brief introduction to API concepts and demonstrates: - Using PROC HTTP to submit API requests - Using the JSON and XMLV2 LIBNAME engines to work with API response results - Working with the World Bank API to obtain data in real-time |
proc http, proc step, inner join, order by, macro variable, macro put, proc sql, rest api, create table, sas base, libname engine, dataset | 18 | |
| 42 | Going from Zero to Report Ready with PROC TABULATE | Rachel Straney | The TABULATE procedure in SAS can be used to summarize your data into clean and organized tables. This procedure can calculate many of the descriptive statistics that the MEANS, FREQ, and REPORT procedures do, but with the flexibility to display them in a customized tabulated format. At first, the syntax may seem difficult and overwhelming but with practice and some basic examples you can go from zero to report ready in no time. This paper will discuss the benefits of using PROC TABULATE and identify the kinds of reports that this procedure is best suited. An example will be used to illustrate the syntax and statements needed to generate a complex table. The table will include multiple classification variables as well as more than one numeric variable for several computed statistics. Readers will learn the functions of the CLASS, VAR and TABLE statements and how to include subtotals and totals with the keyword ALL. To make the finished table 'report ready,' examples of how to apply formats, labels and styles will also be shared. |
proc tabulate, proc step, proc means, nominal variable, sas syntax, numeric variable, label statement, proc template | 13 | |
| 43 | Growing in Leadership: A Guide for Statistical Programmers | Anil Jangili | In the rapidly evolving field of data science and analytics, statistical programmers play a crucial role in transforming raw data into actionable insights. As organizations increasingly rely on data-driven decision-making, the demand for skilled statistical programmers continues to rise. However, technical expertise alone is not enough to thrive in this competitive landscape. To advance in their careers, statistical programmers must also develop leadership skills. This paper explores how statistical programmers can grow into leadership roles and make a significant impact within their organizations. 1. Embrace Continuous Learning The field of statistics and programming is constantly changing, with new tools, technologies, and methodologies emerging regularly. To grow as a leader, statistical programmers should commit to continuous learning. 2. Develop Soft Skills While technical skills are essential, soft skills are equally important for effective leadership. Statistical programmers should focus on developing the soft skills 3. Seek Mentorship and Networking Opportunities Mentorship can be a powerful tool for professional growth. Statistical programmers should seek out mentors who can provide guidance, share experiences, and offer insights into leadership roles. 4. Take Initiative and Lead Projects To demonstrate leadership potential, statistical programmers should actively seek opportunities to lead projects or initiatives within their organizations | statistical programmer, clinical programming, data governance | 4 | |
| 44 | Have a Date with ISO? Using PROC FCMP to Convert Dates to ISO 8601 | Richann J. Watson | Programmers frequently have to deal with dates and date formats. At times, determining whether a date is in a day-month or month-day format can leave us confounded. Clinical Data Interchange Standards Consortium (CDISC) has implemented the use of the International Organization for Standardization (ISO) format, ISO 8601, for datetimes in SDTM domains, to alleviate the confusion. However, converting "datetimes" from the raw data source to the ISO 8601 format is no picnic. While SAS has many different functions and CALL subroutines, there is not a single magic function to take raw datetimes and convert them to ISO 8601. Fortunately, SAS allows us to create our own custom functions and subroutines. This paper illustrates the process of building a custom function with custom subroutines that takes raw datetimes in various states of completeness and converts them to the proper ISO 8601 format. | proc fcmp, proc step, return, sas log, sample, time., numeric variable, cdisc | 15 | |
| 45 | Here Comes the Rain (Cloud Plot) Again | Bartosz Jabłoński | Rain cloud plots are very popular and practical tools for data visualization. They enable the display of several components in one figure, including: kernel density estimates, data points, and box-and-whisker plots. This method facilitates the comparison of variable distribution across different categories. During this presentation, a macro called %RainCloudPlot() will be introduced and its capabilities for creating rain cloud plots will be presented. Sample code will accompany all examples. | proc sgplot, class variable, scatter plot, density plot, box plot, sas packages | 21 | |
| 46 | How to Create a Spreadsheet-driven Batch Job Using R and SASSY | David J. Bosak | It is very common to use spreadsheets to drive batch jobs in SAS. The spreadsheets allow you to easily control which programs are run, and in what order. They also provide a centralized place to store titles, footnotes, and other information used in the programs. Is it possible to create a similar system in R? Yes! This paper will demonstrate how to do it using a typical spreadsheet layout, and reports written with the SASSY set of R packages. | batch job, sample | 8 | |
| 47 | Impact of Irrigation on Photosynthesis, Water use and Heat Intensity of Chili Pepper | Edmond Kwekutsu | This study investigates the effect of varying soil moisture levels on the physiological performance and heat intensity of three chili pepper varieties-Habanero, Lantern, and Helios-grown under controlled greenhouse conditions. Irrigation treatments were categorized into low (12-15%), medium (15-18%), and high (18-20%) soil moisture. Using the LI-COR 6800 photosynthesis system, key parameters such as photosynthesis, transpiration, and stomatal conductance were measured, along with Scoville Heat Units (SHU) to assess pepper heat intensity. Data visualization was performed using SAS Viya. Results showed that medium irrigation produced the highest SHU (1.8M), followed by low (1.6M) and high (1.5M). The use of bubble charts revealed nuanced physiological responses-showing that similar stomatal conductance and transpiration rates could result in different photosynthesis levels, highlighted by bubble size. Gauge charts visually depicted SHU intensity through color-coded zones, making differences in heat levels immediately clear. Together, these visualization tools made complex plant responses more digestible, highlighting the unexpected finding that medium irrigation, not high or low, yielded the highest SHU. This dual-chart approach was not only innovative but also enhanced the clarity and depth of interpretation. | 1 | ||
| 48 | Introducing Automatic Graphics from Python Models in SAS | Dan Heath | SAS users have the ability to automatically produce graphics with their tabular output from SAS analytic procedures using the ODS Graphics system. Many of these procedures provide options for controlling the content and appearance of these graphics. In addition, the ODS system provides statements for controlling what output is displayed, as well as a means for controlling the order of that output. SAS Viya and SAS Workbench users have had these same capabilities when running SAS programs, but not when running Python programs - until now. Python users can now have graphics generated automatically from models that have graphics support. In addition, models now contain a new method called customize_results() that gives you the ability to control aspects of the graphics output, as well as filter tabular results and control result output order - all without rerunning the model computations. Come see how this new functionality can improve the analysis process and help simplify the task of reporting your results. |
proc princomp, sas base, proc python, sas viya, regression analysis | 10 | |
| 49 | Introduction to Data Simulation | Jason Brinkley | Creating synthetic data via simulation can often be a powerful tool for a wide variety of analyses. The purpose here is to provide a basic overview of simulating data using the SAS DATA STEP for single and multiple variables of different types for a variety of purposes. Focal points are in creating correlated variables and the general methodology of Monte Carlo simulation. Examples will include power calculations, sensitivity analysis, and exploring nonstandard analyses. The workshop is designed for the mid-level analyst who has basic knowledge of data management, visualizations and basic statistical analyses such as correlations and t-tests. |
standard deviation, normal distribution, proc step, monte carlo, correlation, sample, rand, power analysis, binomial distribution, nominal variable, seed, sample size, covariance | 10 | |
| 50 | Introduction to Developing Neural Nets | David B. Horvath | Neural nets have been discussed in in SAS regional and international conferences since last century, This session will be a bit different in that it starts with the obligatory basic background and then goes into actual code. We will discuss what Machine Learning can and cannot solve. There will be more discussion of the how results are produced and less about the overall concepts. Topics What is a neuron? How does a neural net model a human neuron? How does that work with data? What does it NOT solve? Discuss the biggest problems with data. Examples 1. Working data 2. Why'd we get that result? 3. More Working data 4. Why'd we get that* result? 5. Reviewing the code | training set, scatter plot, test set, machine learning, output delivery system | 21 | |
| 51 | Investigation of the Wage Gap between Sexes in Agriculture | Jordyne Lewis | The pay gap between different genders is a prevalent issue on a global scale. It is especially pronounced in developing and third-world countries, where economies are agricultural-based rather than industrial, further exacerbating this problem. The resolution of the gender wage gap is crucial to the interdependence of the global market. The purpose of this paper is to study whether there is a possible difference between the average income of male small-scale food producers and female small-scale food producers in certain countries. This paper examines the gender pay gap through data pulled from the United Nations SDG codebook and Database and analyzes it through hypothesis tests, confidence intervals, and graphs that are created through SAS Studio through SAS OnDemand for Academics. This study explores the potential wage gap for small-scale food producers who depend on these practices and where more resources may possibly need to be funneled in terms of assistance. | confidence interval, histogram, proc step, box plot, proc ttest, sample, proc means, input statement, proc contents, homoscedasticity, excel, proc sgplot | 10 | |
| 52 | Is Hockey still Canada's game? How USA teams have won every Stanley Cup since 1994 | Joe DeMaio, Michael Frankel, Long Doan, Jon-Paul Faix, Aaron Montgomery |
The last Canadian team to win Lord Stanley's cup in the National Hockey League was the Montreal Canadiens in 1993. Since then, each championship has been claimed by a team geographically located in the United States. Is this streak unusual? Perhaps it is particularly unusual in light of the fact that Hockey is known as Canada's game. Is Hockey in its modern incarnation still Canada's game? Given the long history of the NHL should we expect such a streak to occur at some point in time? Are we too fixated on the geographic location of the teams in question? Perhaps the nationalities of the players on these Championship American teams skew heavily towards Canadian? Or perhaps to other countries? Alternatively, perhaps we are at the start of country spanning sports curse akin to the Red Sox trade of Babe Ruth. Or maybe we should just follow the money. In this paper, we examine the likelihood of such a streak, the changing landscape of nationalities and influence factors on players in the NHL. | likelihood function, proc freq | 16 | |
| 53 | Large-Scale Time Series Forecasting in Model Studio | Danny R. Modlin | In this workshop, you learn to build time series models for large-scale time series problems with many hierarchically related series. You will experience the capability of Model Studio to diagnose, fit, and assess models for many time series at once. Use the new Hierarchical Modeling Node to create time series models at each of the levels of the hierarchy. Need to extract your reconciled predictions from each level of the hierarchy? No problem. Within the Hierarchical Modeling Node, you can dive into each level of the hierarchy and export these desired predictions. | time series analysis, champion model, time series data, sas viya, data mining, by group processing, forecast horizon, feature selection, predictor variable, score code, seasonality | 39 | |
| 54 | Last Observation Carried Forward (LOCF) in Longitudinal Pharmaceutical and Clinical Trials Studies: Adopting a Functional Approach to Imputing Missing Values Using PROC FCMP, the SAS Function Compiler | Troy Martin Hughes | Last observation carried forward (LOCF) is a ubiquitous method of imputing missing values in longitudinal studies, and is commonly implemented when a subject (i.e., a patient or participant) misses a scheduled visit, and data cannot be collected (or generated). In general, the last "valid" value from a previous visit is retained for the later visit on which the data could not be obtained, and this conservative estimation succeeds in cases where the actual value would have been little changed. Nuanced criteria may stipulate which prior values count as "valid" (e.g., after the start of treatment) as well as for how long (e.g., how many days, visit weeks, consecutive missed visits) a value can be used to impute other values. Given these complexities, LOCF solutions implemented in SAS historically adopt a procedural approach, and often require multiple DATA steps and/or procedures to impute data both across observations and within subjects. Conceptually, however, a functional approach can be envisioned in which LOCF could be calculated using a function call-that is, delivering the same functionality through a single line of code while hiding (abstracting) the complexity of the calculation inside the function's definition. The FCMP procedure can deliver this functionality, enabling SAS practitioners to build user-defined functions-even those that perform inter-observation calculations. |
imputation, proc fcmp, missing value, data validation rules, last observation carried forward, retain | 9 | |
| 55 | Lazy Evaluation: A Comparative Analysis of SAS MACROs and R Functions | Chen Ling | Lazy evaluation is a powerful technique that can optimize code execution by deferring evaluations until their results are required, thus enhancing efficiency. In most modern programming languages, like R, lazy evaluation is commonly applied to function arguments. However, the application of lazy evaluation in SAS has not been extensively explored. This paper focuses on the mechanisms of lazy evaluation in SAS MACROs and R functions, offering a comparative analysis of the underlying principles that drive these processes. R's lazy evaluation is driven by a data structure called Promise, which postpones evaluation and does not occupy memory until the value is needed, utilizing a call-by-need strategy. SAS, on the other hand, achieves lazy evaluation through its symbol tables, employing memory to store parameters, and operates on a call-by-name basis. These discrepancies in lazy evaluation strategies can notably impact the results of R functions and SAS MACROs. By examining these distinct approaches, the paper illuminates the impact of lazy evaluation on programming efficiency, supported by illustrative examples. As the shift from SAS to R becomes increasingly prevalent in the pharmaceutical industry, understanding these techniques enables programmers to optimize their code for greater efficacy. This exploration serves as a guide to enhance programming capabilities and performance in both languages. | symbol table, local symbol table, macro definition, macro variable, pharmaceutical industry | 6 | |
| 56 | Leveraging SQL and SAS for Analysis-Ready Datasets | Shavonne J. Standifer | Effective data management is essential for ensuring high-quality analysis and decision-making. SQL is a powerful language for querying and manipulating relational databases, while SAS offers a suite of advanced tools for data preparation, statistical analysis, and reporting. By integrating these technologies, organizations can improve data management, enhance data integrity, and foster collaboration across teams. By following this technical report, readers will: - Use a step by step process to create a dynamic report. - Learn best practices for writing SQL queries in SAS using PROC SQL. - Understand how to use SAS tools for cleaning, validating, and structuring datasets. - Discover techniquesfor using PROC REPORT to create custom reports. - Gain the ability to maintain analysis-ready datasets that support data-driven decision-making.Use SAS ODS and PROC SGPLOT to create data visuals for custom reporting. This paper provides a general guide to utilizing SQL and SAS programming to efficiently create, manage, and maintain analysis-ready datasets. Through step-by-step instructions and real-world examples, readers will gain the skills needed to harness the power of structured query language (SQL) and SAS for streamlining data processes within their organizations. Whether you are a data analyst, researcher, or IT professional, mastering these techniques will enable you to work more efficiently and drive impactful results |
proc sql, proc step, proc report | 3 | |
| 57 | Lookup Tables (LUT) in SAS and Data-Driven Programming | Imelda C. Go, Abbas S. Tavakoli |
A lookup table (LUT) is a data structure that can help the programmer determine the outcome given the input. This paper illustrates the use of lookup tables to process data for an outcome instead of manually coded statements. The use of lookup tables has the potential to reduce processing time since computations are replaced by a lookup operation. Business rules and adequate documentation form the foundation of the lookup table. Embodying the processing logic in the lookup table provides a framework for data-driven programming, automation, and for the programmer to more efficiently complete programming tasks. There is the potential to reduce the amount of code because the lookup table already contains the information that would otherwise require hard coding. Using a lookup table can also simplify the code maintenance tasks and reduce human error when business rules need to change. | lookup, data validation rules, proc format, proc step, data merging, raw data, proc sql, numeric variable, sample, missing value, excel | 17 | |
| 58 | Macro Variable Arrays Made Easy with macroArray SAS package | Bartosz Jabłoński | A macro variable array is a jargon term for a list of macro variables with a common prefix and numerical suffixes. Macro arrays are valued by advanced SAS programmers and often used as "driving" lists, allowing sequential metadata for complex or iterative programs. Use of macro arrays requires advanced macro programming techniques based on indirect reference (aka, using multiple ampersands &&), which may intimidate less experienced programmers. The aim of the paper is to introduce the macroArray SAS package. The package facilitates a solution that makes creation and work with macro arrays much easier. It also provides a "DATA-step-arrays-like" interface that allows use of macro arrays without complications that arise from indirect referencing. Also, the concept of a macro dictionary is presented, and all concepts are demonstrated through use cases and examples. | macro variable, macro put, proc step, cpu time, class variable, macro loop, proc sql, macro quoting function, macro definition, %if-%then-%else, group by, macro facility, proc print, macro trigger, sas packages, macro variable array | 46 | |
| 59 | Mobile app generated nail picture RGB data text files from very low birth weight (VLBW) infants at NICU bed: SAS code to assemble large volume of text files into analytical datasets for image analysis | Neeta Shenvi | ABSTRACT This project presents the development and application of SAS macro code to process and integrate a large volume of RGB text files derived from fingernail and palm photos of preterm infants in the NICU bedside. Study nurse takes infant nail pictures in NICU bedside using a smart phone, identify a region of interest (a rectangle) on the picture. The phone app converts pixel intensities into numerical values for color (red, green, blue) and creates a text file. The text file from phone app is then uploaded to data coordinating center servers for further processing. The phone app generated over 1700 txt files from 89 infants (weekly longitudinal nail pictures for first 13 weeks of life during their stay in the NICU). We describe SAS 9.4 code to manage and merge these files to create analytic datasets. These datasets are further merged with infant longitudinal characteristics variables that are saved in a separate database. Our long term goal is to apply various image analysis algorithms on these analytic datasets to devise noninvasive methods to predict hemoglobin and detect anemia. | txt, proc sql, macro definition, dataset, proc step, character variable, string functions, correlation | 11 | |
| 60 | Modeling and Forecasting Wildfire Trends in Colorado, Montana, Utah, and Wyoming: A Spatio-Temporal Approach with R | Princess Tagoe | Wildfires pose serious threats to ecosystems, communities, and economies across the United States most especially the Western part. This research investigates historical wildfire trends and forecasts future events in Colorado, Montana, Utah, and Wyoming using spatio-temporal analysis. Leveraging data from the U.S. Forest Service Fire Occurrence Database (1992-2020), we used R for data preparation, pattern detection, and predictive modeling. The study examines how wildfire occurrences evolve over time and space to identify key trends and potential hotspots. These insights support disaster preparedness, resource allocation, and risk mitigation efforts. By demonstrating the practical application of R in environmental analytics, this project highlights how data-driven approaches can inform effective wildfire management strategies. | proc freq, time series analysis, proc step | 14 | |
| 61 | Modernizing Legacy SAS Applications and Program Code | Kirk Paul Lafler | Whether you are a novice or experienced SAS programmer tasked with supporting your organization's legacy applications, programs, and code, resources are available to help you modernize and streamline for the 21st century and beyond. This paper examines popular constructs, statements, functions, algorithms, operators, methods, expressions, and programming techniques that can be applied to update and optimize code first introduced as far back as the 1970s. Attendees will learn a variety of approaches to simplify, scale, and modernize legacy applications and program code while improving efficiency, maintainability, and long-term sustainability. | proc step, if-then-else, proc sql | 52 | |
| 62 | Modernizing Predictive Modeling in SAS: When to Move Beyond PROC GLM | Duha Khan, Sriya Venkat, Sydney McDermott |
SAS offers many procedures that can be used to conduct predictive analysis. PROC GLM is one of the older tools used to fit general linear models to datasets. While it includes many options that allow for the implementation of classes, subgroups, weighting, and more, there are times when another, newer procedure may be preferred. For example, since PROC GLM is not a high performance procedure, it is sometimes better to use a high-performance alternative like PROC HPREG, which is better suited for larger datasets. Additionally, PROC GLM requires manual variable selection from the programmer. While this can be useful at times, there are other cases where the automated selection with PROC GLMSELECT can prove to be far more efficient. This paper explores the pros and cons of these procedures with examples to help users choose the most appropriate predictive modeling tool for real-world applications. |
proc step, proc glm, proc genmod, proc hpreg, proc reg, feature selection, proc glmselect, nominal variable | 8 | |
| 63 | More Muggles, More Macros: Adding Advanced Data-Driven Wizardry to Your SAS Programs | Joshua M. Horstman, Richann J. Watson |
In their popular presentation "From Muggles to Macros", Horstman and Watson delivered a spell book full of macro magic to enhance SAS programs with data-driven wizardry. This exciting sequel to that enchanting performance adds to the list of incantations for creating dynamic, flexible, reusable programs that can automatically adapt to change. New charms include the use of control tables, the CALL EXECUTE routine, and of course, more macro language techniques. Don't hardcode data values into your programs. Cast a vanishing spell on data dependencies and let the macro facility write your SAS code for you! | macro variable, call execute, proc step, macro call, macro facility, ods rtf, proc sgplot, output delivery system, variable list, change from baseline, macro definition, safety population, &variable, proc sql, excel, macro loop | 45 | |
| 64 | Multiple Logistic Regression Using SAS and SPSS | Amita Patil | This paper will cover conducting a multiple logistic regression using SAS and SPSS. We will discuss how to a) frame a research question, b) run all assumptions, c) run a multiple logistic regression, d) interpret, e) report results, and f) write in APA style for publication. | logistic regression, regression analysis, logistic distribution, response variable, multinomial logistic regression, ordinal logistic regression, null hypothesis | 14 | |
| 65 | Multivariate Time Series Forecasting of Lung and Colon Cancer Mortality: A Comparative Study Between Jamaica and the United States | Shanice Douglas | Lung and colon cancers remain among the top causes of cancer-related mortality globally, with significant variations across health systems. This study applies multivariate time series modeling, specifically the Vector Autoregressive Moving Average (VARMA) approach, to analyze lung and colon cancer mortality trends in Jamaica and the United States from 1960 to 2021. It explores interdependencies between the two cancer types within each country and provides 12-year ahead forecasts. Model performance is evaluated using AIC, RMSE, and MAPE, with Monte Carlo simulations enhancing forecast reliability. A comparative assessment highlights cross-country disparities, shared patterns, and potential contributing factors. Findings aim to inform predictive analytics and guide public health policy for better cancer control. Keywords: Cancer Mortality, Multivariate Forecasting, VARMA, Time Series, Monte Carlo Simulation | 1 | ||
| 66 | Navigating Model Choice in SAS: A Case-Based Decision-Support Framework for PROC REG, GLM, GENMOD, and MIXED | Sriya Venkat | SAS provides a wide range of procedures for modeling continuous, binary, and count data. In this paper, we will analyze the uses of PROC REG, PROC GLM, PROC GENMOD, and PROC MIXED. These procedures, though they sometimes have overlaps in output, significantly differ in their methods of estimation, complexity, and underlying assumptions. This paper builds on previous comparative work and develops a practical guide for biostatisticians working with real-world health data. Using examples from various clinical trials and epidemiological studies, we demonstrate how estimation, interpretability, and fit are impacted by model choice - especially when we have causes of non-independence, non-normality, and repeated measures. We evaluate these four procedures on case studies involving blood pressure monitoring, adverse event counts, and longitudinal biomarker data. The result is a decision-support framework that helps researchers select and apply the most appropriate procedure based on study design, outcome type, and expected modeling outcomes. This paper aims to support training and transparency for analysts in the health sciences using SAS for complex data structures. |
proc step, proc reg, proc genmod, proc mixed, proc glm, random intercept | 10 | |
| 67 | Network Science: Algorithms to Analyze and Optimize Network Structures and Solve Business Problems | Carlos Pinheiro | Network science is the study of connected things. Things can be represented by people, devices, companies, governments, etc. Connected can be represented by calls, messages, likes, money transferring, references, geo-positioning, contracts, etc. Networks are constructed from relationships among entities, throughout different types of events. Network analysis can be used to understand churn, diffuse products, detect fraud, identify anomalies, along with many other applications. Network optimization searches for optimal solutions to minimize or maximize an objective function based on a problem described as a graph structure. The objective function can be cost, revenue, time, distance, and problems are often assigned to supply chain, routing, distribution, etc. In traditional network analysis, components, cores, or communities can be used to reveal groups of accounts, persons or organizations that are strongly related. In network optimization, cycles, cliques, paths, and shortest paths can reveal patterns on the connections that cannot be highlighted by traditional analysis. Pattern matching can search for specific groups of nodes with specific types of relations among them. Node similarity searches for entities in the network with similar topology or neighborhood. Network algorithms can be applied to an endless list of business cases, virtually all industries, to solve problems or to provide additional insights and features to traditional unsupervised and supervised techniques. | network optimization, account | 3 | |
| 68 | Obtaining Metadata Information on Data Transfers for Dataset Profiling | Amy Zhang | During a clinical trial, it is common to extract data from a live database for various purposes, such as medical monitoring, TLFs development, or evaluation of the safety profile for an investigational drug. These data extractions can happen multiple times throughout a trial lifecycle, and it is beneficial for statistical programmers to understand the overall context of the data at each data transfer. Some particular questions we want to answer are how many datasets were included in this transfer and were there any missing or new datasets? Have there been changes to the dataset structure? Were any variables or their controlled terms introduced or removed? Was new value-level metadata added to the finding domains? Due to the interdependent nature of SDTM and ADaM codes, without awareness of all the updates, such changes can result in potential mapping errors that impact ADaM programming or the contents of the final outputs. Analyzing all these aspects manually can be time-consuming. To address this problem, we developed a utility tool to check the contents of SDTM datasets and produce a summary report of differences between the newest delivery and previous deliveries. We assembled a customized list of common changes that we expect to occur or need to pay close attention to across the SDTM domains, and implemented SAS macros to automatically summarize and output the information we are interested in. | sdtm domain, proc step, macro loop, do loop, macro variable, proc sql, excel, cdisc | 7 | |
| 69 | Perfect Patient Profiles in SAS using ODS and the Graph Template Language (GTL) | Joshua M. Horstman, Richann J. Watson |
Patient profiles are often used to monitor the conduct of a clinical trial, identify data entry errors, and catch protocol deviations. Each profile combines key data collected regarding a single subject - everything from dosing to adverse events to lab results. In this presentation, two experienced statistical programmers share how to leverage the SAS Output Delivery System (ODS) and the Graph Template Language (GTL) to blend both tabular and graphical elements and create beautiful, highly-customized, information-rich patient profiles that meet the requirements for managing a modern clinical trial. |
adverse events, proc report, proc step, proc sql, vital signs, macro loop, macro variable | 38 | |
| 70 | Preserving the Blind: Cross-Functional Solutions During Study Design Evolution from Blinded Parent to Open-Label Extension | Tanmay Khole | Addition of an open-label extension to a blinded parent study mid-study introduces significant risks to trial integrity and requires coordinated effort across multiple functions. This case study highlights how data management, statistical programming, and statistical teams collaborated to address complexities during study conduct, driven by evolving design requirements. The transition posed an immediate risk of unintentional unblinding and potential treatment disruption, primarily due to complex randomization schema. In response, the cross-functional team rapidly implemented data masking, dummy randomization strategies, and strict access controls to preserve the blind while ensuring uninterrupted patient treatment. The evolving trial design had far-reaching impacts on data operations. It necessitated updates to the electronic data capture system, edit checks, and data transfer specifications. Metadata, SDTM & ADaM data, and reporting logic were revised to support parallel streams of blinded and open-label data. Vendor contracts & data integration agreements were also updated to reflect changes in scope, timelines, & deliverables. The result was a seamless continuation of the study without compromising scientific validity or regulatory compliance. This session provides a practical blueprint for how cross-functional teams can manage mid-study design changes with agility, ensuring data quality, treatment continuity, and operational consistency across the trial lifecycle. | randomization, data governance, edc | 5 | |
| 71 | PROC BGLIMM: The Smooth Transition to Bayesian Analysis | Danny R. Modlin | Many analysts are interested in taking models they currently have and transitioning them to the Bayesian realm. Most leap from their favorite classical analysis procedure directly to PROC MCMC, the general-purpose Bayesian procedure. This presentation will feature the BGLIMM procedure available since SAS/STAT 15.1. This will allow the participant to model non-normal responses and include random effects within their Bayesian approach. Discussion will include options of priors and availability of statements. Examples will include models originally written in PROCs REG, GLM, GLMSELECT, GENMOD, MIXED, and GLIMMIX. |
covariance, proc step, proc mixed, output delivery system, sample, covariance structure, cpu time, monte carlo, ods graphics, poisson distribution, regression analysis | 57 | |
| 72 | Proc Optgraph, the Traveling Salesman Problem and Map Drawing with the Annotation Dataset | Caleb Greski, Joe DeMaio |
Many people, such as Superbowl winning quarterbacks, celebrate success in life by saying "I'm going to Disneyland!". What do you do once you get there? I doubt you want to spend lots of time waiting in line. Perhaps there is an optimized order in which to visit rides and attractions to minimize line wait time. This is known as the Traveling Salesman Problem (TSP). In this paper we demonstrate how to use the OPTGRAPH Procedure in SAS to compute a route for our travelling salesman and construct a visualization of said tour on a map. Using the annotation data set feature allows us to design graphical displays of TSPs which overlay the optimized path on top of any relevant images, such as a map designed by a graphic designer, or a chess board. |
proc step, proc sgplot | 19 | |
| 73 | PROC SQL Case Study | Carleigh Jo Crabtree | Ready to sharpen your PROC SQL skills? This session guides you through a series of questions that gradually increase in complexity, each designed to highlight new techniques and problem-solving strategies. Along the way, you'll learn about statement order and useful options, manipulate data with CASE expressions, and discover the power of dictionary tables. We'll also cover inner joins, noncorrelated subqueries, data-driven macro variables with the INTO clause, summary functions, boolean expressions, and SET operators. Whether you're new to PROC SQL or looking to expand your toolkit, this session provides practical examples you can apply immediately in your own work. |
proc sql, proc step, group by, where statement, order by, create table | 21 | |
| 74 | Quick Start to the SAS Macro Language | Allison Saito | SAS macro is a powerful, yet often misunderstood tool. Through a brief talk and longer demonstration, we'll explore some of macro's capabilities and talk about best practices for adding macro components to our programs. | create table, group by, proc sql, macro facility, proc step, macro variable, macro definition | 13 | |
| 75 | RIGHT-SIZING CHARACTER VARIABLES: A SAS DATA MANAGEMENT STRATEGY FOR OPTIMIZING LARGE DATASETS | Divya Gadde | Managing large, raw datasets in SAS-especially those lacking metadata or proper layout documentation-often leads to inefficient data structures, inflated storage requirements, and slow performance. This paper presents a practical and scalable solution using the %RESIZE macro, designed to optimize character variable lengths by dynamically adjusting them to their actual maximum content length. The %RESIZE macro automates the process of: - Identifying all character variables in a dataset - Calculating their actual maximum lengths - Generating and applying optimized LENGTH, FORMAT, and INFORMAT statements - Producing more efficient dataset without compromising data integrity By right-sizing variables, organizations can significantly reduce file sizes and processing times. In one example, a dataset with 4 million records and 118 variables saw a reduction in processing time from 51 minutes to just 4 minutes, along with notable savings in storage. This strategy improves performance, resource utilization, and overall usability of SAS datasets-making it a valuable data management approach in high-volume, real-world environments. | character variable, length statement, cpu time, dataset | 7 | |
| 76 | SAS and R in Action: Comparison of XPT File Creation | Chen Ling | SAS is a statistical software used for data analysis and the XPT (SAS Transport File) file format is a standardized way to present data which is widely accepted for clinical trial regulatory submissions. As more and more companies are exploring using R to generate statistical outputs for regulatory submission, there is a growing interest in using R to generate xpt files. However, due to the software setup difference between SAS and R, they handle dataset and variable level attribute differently. In this paper, we introduce the popular ways to assign these attributes in both SAS and R and provide comprehensive comparison of the process and output. Through practical examples, we will demonstrate how to ensure the exported datasets from SAS and R meet the requirement. | label statement, sample, adam dataset, regulatory submission, length statement, cdisc | 7 | |
| 77 | SAS Code Hidden in Plain Sight | Bartosz Jabłoński | Sometimes there is a need to share a SAS macro in a way that the execution of the macro is possible, but at the same time the source code is not "readable" (e.g., the code is a proprietary solution). In this article, a programming-based solution utilizing encrypted user-written functions (FCMP) and SAS data sets, which gives requested effect, will be explained. Furthermore, the solution (in contrary to operating-system-dependent SAS catalogs) allows for code exchange between different operating systems! As a cherry on top, the GSM (Generate Secure Macros) package, which allows users to create secured macros stored in SAS PROC FCMP functions and share them between different operating systems without showing their code, will be presented. |
data step, macro definition, cpu time, macro put, proc step, macro variable, proc fcmp, proc print, proc sql, catalog, macro loop, sas packages | 28 | |
| 78 | SAS Data-Driven Software Design: How to Develop More Modular, Maintainable, Fixable, Flexible, Configurable, Compatible, Reusable, Readable Software through Control Tables and Other Control Files | Troy Martin Hughes | Data-driven design describes software design in which the control logic, program flow, business rules, data models, data mappings, and other dynamic and configurable elements are abstracted to control data that are interpreted by (rather than contained within) code. Thus, data-driven design leverages parameterization and external data structures (including configuration files, control tables, decision tables, data dictionaries, business rules repositories, and other control files) to produce dynamic software functionality. This hands-on workshop introduces real-world scenarios in which the flexibility, configurability, reusability, and maintainability of SAS software are improved through data-driven design methods, as introduced in the author's 2022 book: SAS Data-Driven Development: From Abstract Design to Dynamic Functionality, Second Edition. Scenarios install the attendee as the newest intern at Scranton, Pennsylvania's, most infamous paper supply company, tasked with converting legacy, hardcoded SAS programs into flexible, configurable data-driven design. Come help Jim, Dwight, Stanley, and Phyllis sell more paper--and learn data-driven best practices in the process! | data dictionary, %if-%then-%else | 8 | |
| 79 | SAS Macro Case Study | Carleigh Jo Crabtree | Learn SAS macro techniques through a step-by-step case study. Starting with a base program containing PROC SQL and PROC SGPLOT steps, the program is transformed into a macro definition that accepts parameters for flexibility and reuse. Along the way, learn how to create data-driven macro variables, use DO loops with indirect references to generate multiple PDFs with dynamic filters and titles, validate inputs with conditional processing and leverage autocall macros for reusable automation. %PUT statements are used throughout to verify results and aid in debugging, giving you practical strategies to apply in your own projects. |
macro facility, proc sql, proc step, macro definition, %if-%then-%else, create table, group by | 18 | |
| 80 | SAS packages - a modern code sharing medium for SAS. | Bartosz Jabłoński | When working with SAS code, especially with a complex one, there is a moment when you decide to break it into small pieces. You create separate files for macros, formats/informats, for functions or data too. Eventually the code is ready and tested, and sooner or later you will want to share it with another SAS programmer. You have developed a program using local PC SAS, but the deployment is on a server with a different OS. Your code is complex (with dependencies such as multiple macros, formats, datasets, etc.) and is difficult to share. Often when you try to share code, the receiver will quickly encounter an error because of a missing macro, missing format, or whatever...small challenge, isn't it? In this presentation we discuss a solution to the problem - the idea of SAS Packages, an answer to a reflection: Modern data focused languages, like R or Python, have vast ecosystems for building packages. Those environments allow their users to share their ideas, inventions, and code in an easy, almost seamless way. Why doesn't SAS, with its profound and historically well-established impact on data analysis, embrace such a marvelous idea? We discuss what are SAS Packages, how to use and develop them, and how to make code-sharing a piece of cake. And of course what opportunities, possibilities, and benefits SAS Packages bring to the community of SAS programmers. | sas packages, sas programmer | 10 | |
| 81 | Selective SAS Option Restoration with PROC COMPARE and PROC OPTLOAD | John Henry King | Abstract Managing system options in SAS macros is often error-prone, especially when global settings are altered temporarily. This paper presents a macro %u_optstore that allows for the safe saving and selective restoration of only the SAS options that have changed. By combining PROC OPTSAVE, PROC COMPARE, and PROC OPTLOAD, this approach minimizes risk, supports nested macros, and provides debugging transparency. It also avoids known issues associated with full option reloads, such as unwanted resets to session defaults. |
proc step, options statement, proc compare, temporary dataset, macro variable | 7 | |
| 82 | Short-term forecasting with a computationally efficient nonparametric transfer function model | Jun Liu | In this paper a semi-parametric approach is developed to model non-linear relationships in time series data using polynomial splines. Polynomial splines require very little assumption about the functional form of the underlying relationship, so they are very flexible and can be used to model highly non-linear relationships. Polynomial splines are also computationally very efficient. The serial correlation in the data is accounted for by modelling the noise as an autoregressive integrated moving average (ARIMA) process, by doing so, the efficiency in nonparametric estimation is improved and correct inferences can be obtained. The explicit structure of the ARIMA model allows the correlation information to be used to improve forecasting performance. An algorithm is developed to automatically select and estimate the polynomial spline model and the ARIMA model through backfitting. This method is applied on a real-life data set to forecast hourly electricity usage. The non-linear effect of temperature on hourly electricity usage is allowed to be different at different hours of the day and days of the week. The forecasting performance of the developed method is evaluated in post-sample forecasting and compared with several well-accepted models. The results show the performance of the proposed model is comparable with a long short-term memory deep learning model. | neural network, deep learning | 31 | |
| 83 | Simplifying SAS Viya: Explaining the Compute and CAS Servers, Caslibs, and In-Memory Data | Carleigh Jo Crabtree | SAS Viya is a modern, cloud-enabled analytics platform designed for high-speed processing and scalability. It's often described with terms like in-memory and massively parallel processing-but what do these concepts really mean in practice, and how can SAS 9 programmers continue to leverage their existing skills in this new environment? This paper demystifies SAS Viya by breaking down the core capabilities of its two primary servers, explaining caslibs-what they are, how to use them, and how they compare to traditional SAS libraries-and demonstrating how to load data into memory for optimal performance. Helpful options and considerations when working with data on the CAS Server are also explored. Whether you're new to Viya or transitioning from SAS 9, you'll gain a clear, practical understanding of how to work effectively in this modern analytics platform. | cas, sas viya, proc step, sas 9, sas library, parallel processing, sas studio, by group processing, proc import, work library, libname statement, analytics platform, dataset, proc sql | 27 | |
| 84 | So You Want To Be An Independent Consultant: 2025 Edition | Joshua M. Horstman | While many statisticians and programmers are content with a traditional employment setting, others yearn for the freedom and flexibility that come with being an independent consultant. While this can be a tremendous benefit, there are many details to consider. This paper will provide an overview of consulting as a statistician or programmer. We'll discuss the advantages and disadvantages of consulting, getting started, finding work, operating your business, and various legal, financial, and logistical issues. The paper has been recently updated to reflect the new realities of independent consulting in 2025 and beyond. | auto insurance, current account | 12 | |
| 85 | Spring Cleaning for CSVs: Prepare for PROC IMPORT | Brooke Ellen Delgoffe | Not all data starts in SAS and a common place it goes when coming from tertiary systems is a CSV. While CSV is a great interoperability tool, it also comes with its share of pitfalls. Free-text with special characters, space padding, and HTML tags are just a few of the things "clogging up" an easy PROC IMPORT and often turning programmers to use the wonderful DATA STEP. Without the automatic metadata and structure capabilities, using the DATA STEP can be time consuming - even if wonderful. In this paper I plan to teach readers about the INFILE, FILE statements and the use of BINARY read-in settings that allow them to input and output to a CSV - allowing ether an "in place" fix or creation of a cleaned CSV. Use of parsing functions will help to identify pesky characters, name their replacements, or eliminate them completely. A macro will be presented to demonstrate the concepts and provide a runnable solution to this pesky CSV problem. Brief Outline: · Introduction · Concept 1: INFILE and FILE Statements ·Concept 1 Exploration: Settings, Rules, and Functions · Concept 2: FIND(), PRXCHANGE(),TRANWRD(), and TRANSLATE() for Finding the Trouble ·Concept 2 Exploration: Examples in Replacement, Finding, and Special Character References ·MACRO: %CSVprep_PROCIMPORT Step-by-Step · Use Cases in Practice · Conclusion |
proc import, proc step, dataset, macro variable, txt, excel, file statement, filename statement, infile statement, macro call, missing value, raw data, proc freq | 16 | |
| 86 | Statistical Analysis in SAS: The Not-So-Scary Overview | Danny R. Modlin | Are you new to using SAS procedures for statistical analysis? Has it been a while since you were in your last statistics course? Are you wondering what are the differences among various procedures used in data exploration and modeling? This presentation is perfect for you! We start with a look at data exploration through procedures like PROC MEANS, PROC UNIVARIATE, etc. We then move to modeling using PROC REGSELECT, PROC GLMSELECT and more. We complete our discussion with categorical data analysis using PROC FREQ, PROC LOGISTIC, and PROC LOGSELECT. This presentation will consider both SAS 9 procedures and CAS enabled procedures within SAS Viya. |
proc freq, proc step, normal distribution, anova, proc glmselect, proc univariate, response variable | 64 | |
| 87 | Statistical Programmer's role in Bioresearch Monitoring (BIMO) package creation | Sampath Madanu | Food and Drug Administration (FDA) has suggested the Pharma companies and CRO's to include the Bioresearch Monitoring (BIMO) package as part of their regulatory submissions. This BIMO package helps FDA's Office of Bioresearch Monitoring Inspectorate (OBMI) to carry out site-level inspections of clinical research sites to ensure the quality, integrity and reliability of data, Clinical trials are conducted as per applicable FDA's regulations and make sure that rights, welfare of participants involved in clinical trial are protected. The BIMO package mainly consists of Part I (General study related information and specific Clinical Investigator information, Part II (Subject level listings organised by site and listing type) Part III (Site Level Dataset). Statistical programmer plays an important role in creation of Subject-Level Data Listings by Clinical Site, a Summary-Level Clinical Site Dataset (clinsite.xpt), Data definition file (define.xml) and BIMO Data Reviewer guide (bdrg.pdf) which are key components of BIMO package. | crf, clinical trial, adverse events, statistical programmer, sample, protocol deviations, randomization, efficacy population, clinical data, concomitant medications | 25 | |
| 88 | The (ODS) Output of Your Desires: Creating Designer Reports and Data Sets | Louise S. Hadden | SAS procedures can convey an enormous amount of information - sometimes more information than is needed. Most SAS procedures generate ODS objects behind the scenes. SAS uses these objects with style templates that have custom buckets for certain types of output to produce the output that we see in all destinations (including the SAS listing). By tracing output objects and ODS templates using ODS TRACE (DOM) and by manipulating procedural output and ODS OUTPUT objects, we can pick and choose just the information that we want to see. We can then harness the power of SAS data management and reporting procedures to coalesce the information collected and present the information accurately and attractively. |
proc contents, proc step, ods output, sas output, estimate, output, excel, data step, proc univariate, odds ratio, proc sql, proc surveyfreq, proc report | 12 | |
| 89 | The Business Value of Diversity Combined with Data Science | Stephen B. Sloan | SAS provides myriad opportunities for customizing programs and processes, including a wide variety of system options that can control and enhance SAS code from start to finish. This paper and presentation demonstrates methods of obtaining information on SAS system options and moves on to fully explicate ten SAS system option hacks, from COMPRESS to XWAIT. System options are highly dependent on platforms, security concerns, SAS versions and products: dependencies and defaults will be discussed. SAS practitioners will gain a deeper understanding of the powerful SAS system options they have seen, used, and automatically included in their code. This presentation is suitable for all skill and experience levels; platform and implementation differences are part of the discussion. | data science, clinical research | 5 | |
| 90 | The GENMOD Toolkit: What do you do when things aren't Normal? | Danny R. Modlin | Life is nice in the statistical world when things are normal (distributed that is). We have performed multitudes of regression analyses where the residuals meet the required assumptions of normality. What happens when this normality is not present? What do you do when your response variable is a count or a rate? Welcome to the world of generalized linear models! In this presentation, we will explore this expansion from normality using the GENMOD procedure in SAS. Suggestions for deciding which distribution to use will be shared. Our discussion and examples will also include a look into zero-inflation and one of the more interesting distributions, the Tweedie distribution. |
poisson distribution, proc genmod, proc calis, likelihood function, maximum likelihood estimation, poisson regression, binomial distribution, regression analysis, negative binomial distribution, response variable, proc step, correlation | 36 | |
| 91 | The Missing Piece | Cali M. Davis | Today's college students are typically resistant to read a textbook, take notes, or study provided course materials in a world where artificial intelligence can do it for them. But let's take it back to an "Ages 6 and Up" time. Using simple dollar store puzzles, the concepts of data mining come alive. Topics such as variable type, error, descriptive and predictive analytics become tangible aspects of learning. Partner this with the use of SAS Viya in the classroom, and you have a collaboration that makes learning fun. In this session, participants will see how to explore a variety of data mining topics while using SAS Viya to analyze the data. This session will also include a demonstration of how the puzzle becomes an opportunity for data collection, visualization, and analysis. | sas viya, proc hpsplit, regression analysis, data mining, proc reg, champion model, descriptive analytics | 17 | |
| 92 | The World is Not Enough: Base SAS Visualizations and Geolocations | Louise S. Hadden | Geographic processing in SAS has recently undergone some major changes: as of Version 9.4 Maintenance Release M5 many procedures formerly a part of SAS/GRAPH are now available in BASE SAS. At the same time, SAS Graphics have added some new procedures such as PROC SGMAP that build on the functionality of SAS/GRAPH's PROC GMAP and incorporate ODS graphics techniques including attribute maps and image annotation. This paper and poster will replicate a map of the world created by the author with SAS/GRAPH and PROC GMAP with the annotate facility using PROC SGMAP to map three different metrics on a map of the world. New SAS mapping and SG procedure techniques will be demonstrated, following Agent 007's adventures across the globe |
proc gmap, proc sgmap, ods graphics, geolocation, sas/graph, sg annotation | 12 | |
| 93 | Time Series Analysis and Forecasting of U.S. Teenage Female Unemployment | Sekyiwaah Nuamah | This study analyzes monthly unemployment patterns for U.S. females aged 16-19 from January 1950 to April 2025 using SAS time series procedures. The research addresses critical socioeconomic needs to understand youth unemployment dynamics, particularly among teenage females who face unique labor market challenges including limited work experience, seasonal employment patterns, and systemic inequalities. This demographic historically experiences unemployment rates exceeding 15%, with heightened vulnerability during economic downturns like the 2008 financial crisis and COVID-19 pandemic. Using PROC ARIMA, we implemented a comprehensive time series analysis workflow including stationarity testing via Augmented Dickey-Fuller tests, model identification through ACF/PACF analysis, and SARIMA model fitting. After evaluating multiple candidate models, SARIMA(0,1,1)(0,1,1)[12] emerged as the optimal specification based on AIC criteria and diagnostic checks. The model successfully captured both seasonal patterns and short-term dynamics, with residual analysis confirming model adequacy. The study generated 12-month forecasts with 95% confidence intervals, revealing expected seasonal fluctuations consistent with school-year employment patterns. These findings provide valuable insights for policymakers developing youth employment programs and workforce development strategies targeting vulnerable demographic groups. |
time series analysis, confidence interval, proc step, proc arima, seasonal difference, model training, pacf plot | 21 | |
| 94 | Time Series Analysis of Quarterly Air Traffic Passenger Counts at San Francisco International Airport | Trenzy Odero, Mostafa Zahed |
This study conducts a time series analysis of quarterly air passenger traffic at San Francisco International Airport (SFO) from 1999 to 2025, emphasizing seasonal patterns, long-term trends, and disruptions caused by the COVID-19 pandemic. Publicly available data from SFO is analyzed using SAS tools including PROC TIMESERIES for exploratory analysis, PROC ARIMA for SARIMA model estimation and diagnostics, and PROC ESM for comparing exponential smoothing techniques. To address non-stationarity, both first-order and seasonal differencing were applied. Based on autocorrelation diagnostics, a SARIMA(0,1,1)(0,1,1)4 model was selected and validated using the Akaike Information Criterion and residual analysis. Although point forecasts performed well, residuals deviating from the normal distribution assumption limited the reliability of interval forecasts. Out-of-sample projections through 2027 suggest a steady post-pandemic recovery in air travel, with consistent seasonal peaks in Q3. Confidence intervals widen over time, reflecting increased long-range uncertainty. Future improvements may include incorporating exogenous variables and adopting non-normal modeling frameworks. This analysis highlights the power of SAS for applied forecasting and offers valuable insights for aviation analytics and operational planning. |
time series analysis, seasonal difference, prediction interval, confidence interval, histogram | 16 | |
| 95 | Title: Optimizing Clinical Research Efficiency through SDTM Dataset Splitting Using SAS: Insights from New SDTM Programmers | Tiffany Bainter, Maddie Hays |
Splitting SDTM (Study Data Tabulation Model) domains into multiple datasets can serve as a valuable tool, streamlining the process of creating and reviewing large, complex data domains. In SDTM, a general observation class domain may be split into separate datasets. In practice, we commonly split the Findings About (FA) and QS (Questionnaires) domains. Common reasons for dataset splitting include better representation of complex data, improved traceability from Case Report Forms (CRF) to SDTM specifications to datasets, and simplified programming and validation. Domains can be split using several methods, including purpose, category, or time points. Creating complaint and consistent split domains can be supported by programming habits in SAS to organize and check your data. This paper will cover practical tips and FAQs such as, ensuring consistent variable naming across split datasets, using unique identifiers (e.g., STUDYID, USUBJID,-SEQ) to link split datasets, updating the Define.XML file, CDISC compliance queries, CRF annotation and SAS code examples. | sdtm domain, proc step, data cleaning, cdisc | 5 | |
| 96 | Undo SAS Fetters with Getters and Setters: Supplanting Macro Variables with More Flexible, Robust PROC FCMP User-Defined Functions That Perform In-Memory Lookup and Initialization Operations | Troy Martin Hughes | Getters and setters are common in some object-oriented programming (OOP) languages such as C++ and Java, where "getter" functions retrieve values and "setter" functions initialize (or modify) variables. In Java, for example, getters and setters are constructed as conduits to private classes, and facilitate data encapsulation by restricting variable access. Conversely, the SAS language lacks classes, so SAS global macro variables are typically utilized to maintain and access data across multiple DATA steps and procedures. Unlike an OOP program that can categorize variables across multiple user-defined classes, however, SAS maintains only one global symbol table in which global macro variables can be maintained. Additionally, maintaining and accessing macro variables can be difficult when quotation marks, ampersands, percentage signs, and other special characters exist in the data. This text introduces user-defined getter functions and setter subroutines designed using the FCMP procedure, which enable data lookup and initialization operations to be performed within DATA steps. Among other benefits, user-defined getters and setters can facilitate the evaluation of complex Boolean logic expressions that leverage data stored across multiple data sets-all concisely performed in a single SAS statement! Getters and setters are thoroughly demonstrated in the author's text: PROC FCMP User-Defined Functions: An Introduction to the SAS Function Compiler. (Hughes, 2024) |
macro variable, proc fcmp, symbol table, global symbol table | 8 | |
| 97 | Using SAS Macro Statement to Combine and Merge Datasets for Temperature Study | Abbas S. Tavakoli, Isabelle Bennett, Robin B. Dail |
Monitoring of physiological vital signs from body temperature and heart rate is crucial to guide treatment for preterm infants to optimize health outcomes. Monitoring continuous measurement of both central (abdominal) and peripheral (foot) skin temperatures will give a thermal gradient, which may predict the onset of infection. Studies have shown that heart rate characteristic (HRC) scores can be used to predict infection; however, a special HeRO monitor must be used in addition to standard care. Our team compared thermal gradients to HRCs to predict infection in early preterm infants (born < 32 weeks gestation age). 364 preterm infants were enrolled in the study after approval of IRB and parental consent. Each infant had a skin temperature probe (thermistor) attached to their abdomen and another to the sole of one foot. Temperature and HRC data were downloaded from a research datalogger, and HeRO monitor as text files, then merged into EXCEL format, with each infant's data containing approximately 41,002 rows. Data were collected from five different sites: Duke (n=25), ECU (n=137), MUSC (n=31), Prisma (n=149), and UNC (n=11). SAS datasets were created for each infant, and a macro was used to combine the data from all infants at each site. Demographic variables were then merged with the combined site data, and finally, the datasets from all sites were merged. Several macro statements were written to facilitate the combination and merging of datasets using SAS, version 9.4. |
macro definition, excel, dataset | 6 | |
| 98 | Using SAS to Show the Distribution and Severity of COVID-19 | LeRoy Bessler | Scatter plots and bar charts are part of the package, but what sets this paper apart are ways to use PROC SGMAP and ODS HTML5 that have never been seen before. Inherent practical difficulties in using choropleth maps (i.e., maps that have countries color-coded based on response value: population, case count, mortality count, case rate, or mortality count) have been overcome. To programmatically color the country areas is NOT a problem. Seeing the color coding CAN BE. Even FINDING a tiny country on a map is always a challenge. The range of the world's land areas includes 2 sq. mi. (0.8 sq. km.) for Monaco. On a web-enabled map, if you cannot find a country, you cannot raise its mouseover text. In this presentation, you will see the solution. My actually usable web-enabled atlas for COVID-19 includes maps for the world and for each continent except Antarctica. To make the broad expanse of Asia more easily explorable, there are five regional maps. There are also maps for the Central America mainland and the Caribbean Islands. The project uses COVID-19 data for 2020 to 2023. Relationships between the five response variables and fifteen other data elements are explored. Another question of interest to be investigated is to what extent the COVID-19 severity in one country can "radiate" to countries that share its boundary. |
data analyst, sas output, sas programmer, excel | 97 | |
| 99 | Versatile Graphic Presentation of Immunogenicity Analysis Results in Vaccine Studies with a Macro that Creates Multiple Forest Plots in One Output | Hong Wang | Immunogenicity analysis is a crucial aspect of vaccine clinical trials. This analysis aims to evaluate the immune responses elicited by a vaccine candidate, enabling researchers and stakeholders to assess the vaccine's effectiveness in inducing protective immunity against specific pathogens. Subgroup analysis within immunogenicity studies is essential for understanding how different populations respond to a vaccine. It helps identify variations in immune responses based on demographic, clinical, or other relevant factors. Forest plots play a vital role in summarizing and visualizing the results of immunogenicity analyses, especially in subgroup immunogenicity analyses where the forest plots of different subgroups are compared to evaluate the overall effectiveness and variability of vaccine responses across these groups. A SAS macro has been developed to generate multiple forest plots in a single RTF output. This tool is particularly beneficial for immunogenicity subgroup analyses, as it provides a clear and concise comparison of immunogenicity results for various subgroups simultaneously, with one individual forest plot generated for each group. This paper presents an overview of the macro's design, key features, and required input data. Additionally, it shows example outputs generated by the macro in different formats. | forest plot, ods rtf, raw data, subgroup analysis, clinical trial, confidence interval, in=, macro call, macro parameter | 9 | |
| 100 | Visualizing SQL Join Types with Venn Diagrams | Kirk Paul Lafler | Joining two or more tables of data is a powerful feature in the relational model. The SQL procedure enables users to join tables of information quickly and easily. Linking one piece of information with another piece of information is made possible when at least one column is common to each table. This paper describes several join types including the importance of joins, the difference between the various join types (inner and outer), the creation of outer (left, right, and full) joins, the importance of the WHERE / ON clause(s) in creating and subsetting rows of data, the purpose of creating and using table aliases to minimize the number of keystrokes, and the application of set operators. |
proc sql, proc step, inner join, full join, right join | 8 | |
| 101 | Working with Open Source in a Highly Regulated Industry | David B. Horvath | The use of open source components within applications is rife with difficulty and risk. The following areas are concerns in all organizations. • Timeliness • Provenance • Correctness • Availability In particular, what happens if you lose your tools or it includes malware or specifically targets your organization? How do you mitigate these dangers? In some ways, life is easier in highly regulated industries because those regulators limit how we can use open source components and tools (although those are relaxing over time). We will be reviewing these factors as well as some of the ethical issues involved. | interest rate, data audit | 12 | |
| 102 | Worried about that Second Date with ISO? Using PROC FCMP to Convert and Impute ISO 8601 Dates to Numeric Dates | Richann J. Watson | Within the life sciences, programmers frequently have to deal with dates in order to determine durations and number of days from a reference point. Within Study Data Tabulation Model (SDTM) domains, Clinical Data Interchange Standards Consortium (CDISC) has implemented the use of the International Organization for Standardization (ISO) format, ISO 8601, for datetimes. While this helps to standardize how dates and times are captured so that there is no confusion as to what the date represents, it does not help from an analysis perspective. Within SDTM, these ISO dates are character dates and sometimes have missing components. From an analysis purposes the dates need to be converted to a numeric date and sometimes imputation of partial dates is needed. There are formats that can convert a complete ISO date to numeric date, but what if the date is a partial date. While SAS has myriad functions, there is no function that will help with this conversion and imputation. Fortunately, with the use of the FCMP procedure, we are able to create our own custom functions to help achieve our desired goal. This paper illustrates the process of building a custom function that will take a date that is captured in the appropriate ISO format in SDTM (--DTC) and convert it to numeric date while also imputing any missing components. In addition, it will set the corresponding date imputation variable (--DTF) to the correct level. |
imputation, proc fcmp, proc step, return, sas function, adverse events, options statement, cdisc | 19 | |
| 103 | Writing ESTIMATE statements to compare continuous scores over time overall and by group | Alexis Wardell, Allison M. Deal |
Research studies often involve continuous outcomes, for example survey instrument scores measured repeatedly over time. We see this in our cancer research when patients complete surveys before, during, and after an intervention. Our motivating example evaluates an intervention vs. usual care, within a randomized trial, and compares scores between groups at 3 timepoints. PROC GENMOD is used to fit marginal linear models with generalized estimating equation methods to account for potential clustering within patients and allow for missingness. The longitudinal model includes time, group (intervention vs. control), and the interaction between time and group. There are many interesting comparisons that can be made from this type of study, including 1) how the outcome scores change over time, 2) do the outcome scores change differently over time between groups, and 3) are scores different between groups at different timepoints. Additionally, consideration must be made in treating time as continuous or categorical. PROC GENMOD is a useful tool to make these comparisons, but special considerations must be made in order to write all the necessary ESTIMATE statements. While tools like LSMEANS are useful, understanding how to write ESTIMATE statements for comparisons is helpful for cleaning output and making comparisons that are unable to be made via LSMEANS. We lay out the underlying model structure and equations to clearly illustrate how to write these ESTIMATE statements. |
interaction effect, estimate, proc genmod, by group processing, proc step, time variable, correlation, class variable | 18 | |
| 104 | Yippee Ki-Yay! Successfully Deploying SAS Financial Management with SAS 9.4 M8 Without Losing Your Mind" | Osmel Brito Bigott, Yenireth Gil Villegas, Carlos Arellano Brito, Sergio Llopis |
Deploying SAS Financial Management (FM) 5.62 on SAS 9.4 Maintenance 8 (M8) can feel like navigating a high-stakes mission-one that requires precision, planning, and a solid understanding of SAS's multi-tier architecture. This paper provides a practical, experience-based guide to installing and configuring SAS FM in a modern M8 environment, helping administrators avoid common pitfalls and reduce deployment time. The session covers strategies for improving reliability and maintainability post-deployment, including environment validation techniques and the use of scripted automation to reduce manual errors and ensure repeatability. Configuration tips, validation checklists, and real-world lessons learned are shared to help ensure a smoother, more predictable implementation experience. Whether you're deploying SAS FM for the first time or upgrading in an existing SAS 9.4 ecosystem, this paper will provide practical insights and confidence to approach the process effectively. Yippee Ki-Yay, SAS Admins! Let's deploy SAS FM 5.62 the smart way. | sas management console, data cleaning, flat file | 6 | |
| 105 | You've Got Options: Five-Star SAS System Option Hacks | Louise S. Hadden | SAS provides myriad opportunities for customizing programs and processes, including a wide variety of system options that can control and enhance SAS code from start to finish. This paper and presentation demonstrates methods of obtaining information on SAS system options, and moves on to fully explicate ten SAS system option hacks, from COMPRESS to XWAIT. System options are highly dependent on platforms, security concerns, SAS versions and products: dependencies and defaults will be discussed. SAS practitioners will gain a deeper understanding of the powerful SAS system options they've seen, used, and automatically included in their code. This presentation is suitable for all skill and experience levels; platform differences are part of the discussion. | sample, options statement, proc step, proc options | 9 |
This site serves as a convenient hosting location and does not work as a publisher. All copyrights belong to their respective owners.
The information on this site is provided for general reference purposes only. Whilst every effort is made to ensure that the site is up to date and accurate, no warrant, nor any responsibility or liability for, the accuracy or completeness of the content or for any loss which may arise from reliance on information contained in this site is provided. Links to other sites are provided for your convenience but no responsibility or liability for the content of those sites or of any external site which links to this site is accepted. References to any specific commercial product, process, service, or corporation are also for information only, and do not constitute endorsement, recommendation or favoring.
SAS is a registered trademark of SAS Institute Inc. SAS, Statistical Analysis System, and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.
HOME
QUICK SEARCH
AUTHORS
KEYWORDS
HELP
BUGS