MACROS TO REPORT MISSING DATA: AN HTML DATA COLLECTION GUIDE Patrick Thornton, University of California San Francisco
|
|
- Sophia Washington
- 6 years ago
- Views:
Transcription
1 MACROS TO REPORT MISSING DATA: AN HTML DATA COLLECTION GUIDE Patrick Thornton, University of California San Francisco ABSTRACT This paper presents SAS macros to produce missing data reports in HTML. The reports are useful for informing manages and guiding the activities of data collection staff. The macros feature the CONTENTS and TRANSPOSE procedures, DATA step, and user information to profile missing data points overall, by variable, and by observation. The reports also incorporate summaries by groups of variables, and a customized menu is integrated with the menu created by the SAS Output Delivery System. INTRODUCTION The SAS macros in this paper produce missing data statistics and HTML reports to assist research staff in tracking survey data collection. The reports present various views of missing data in order to: (a) inform managers of the need to focus data collection resources on specific variables or groups of variables, and (b) create an organized and detailed guide for data collection staff. The macros allow the variables in a SAS data set to be grouped into two dimensions on which to summarize missing data rates. In this example, the dimensions are survey type (e.g. Juvenile Justice items) and time (e.g. survey items collected at 3-months): The first report was just summarized. The second report lists the number and percent of respondents missing for each variable in the data set. The third report shows the number and percent of missing variables for each observation/respondent in the data set. As an example, the above table counts the variables and expected responses overall (e.g. All) and within the values of two dimensions (e.g. Juvenile Justice, Intake). Expected responses are calculated by multiplying the number of variables by the number of observations. The percent of missing responses is the missing responses divided by the expected responses multiplied by 100. The percent-missing statistic informs managers on the missing rates for each group of variables/items. The macros were originally conceived to report missing data for a multi-site study of social services given to high-risk youth. Surveys were collected at different time points relative to a social service program: intake, 3-months, 6-months, 9-months, and 12-months. Each survey reported items from one of the following types: (a) alcohol and drug use, (b) education, (c) juvenile justice, and (d) mental health. All the data were stored in a large data set with some 510 variables and 120 observations, where each observation contained all survey responses for a participant. Missing Data Reports The macros for this paper generate five reports using two dimensions to summarize or list missing variables and/or observations. Reports 1, 2 and 3 were designed to allow project managers to review data collection progress by meaningful variable groups. Reports 4 and 5 were specifically designed to allow data collection staff to received feedback regarding which items need to be collected for each participant. These reports may be very long. The fourth report lists the observations/respondents according to percent items missing (e.g % Items Missing), and the fifth report lists all variables in need of data collection for each participant missing data. OVERVIEW OF THE MISSING DATA MACROS This section will present a logical discussion of the macros with simplified syntax that are used to generate missing data statistics. The next section will cover HTML production. For additional detail please refer to the actual macros toward the back of the paper. Grouping Variables on a Variable List The primary function of macro %GVARCAT was to produce a data set of variable names that could be grouped by two dimensions. The first step simplified from the code is as follows: Proc contents data=original out=cats (keep=name); Run; The cats data set contains the variable name that stores the name of the variables in the original data set. The first DATA step in %GVARCAT uses the values of the variable
2 name to assign each observation in cats to a group on the new variables itemd and itemd2. The simplified code showing the creation of itemd is as follows: Data cats; Set cats; Itemd =.; _name_ = put(name,$8.); type = substr(name,1,2); if type = "jj" then itemd = 1; else if type = "ed" then itemd = 2; else if type = "ad" then itemd = 3; else if type = "mh" then itemd = 4; Format itemd dim1.; Run; The syntax for assigning variables to groups may be altered to produce useful variable groupings for other data sets, and the formats altered accordingly. Creating meaningful categories for variables is much easier if a planned variable naming convention was used. If it is too late to create a naming convention, the categories may be assigned by hand. For example, cats could be saved to an Excel spreadsheet where columns are created for itemd and itemd2. Each cell of the columns could be assigned a number indicating the group the variable belongs to on the two dimensions. The spreadsheet could then be imported to SAS and used as cats in the example above. Combining Grouped Variables with the Original Data Now that the data set cats contains the variables in the original data set grouped into two meaningful dimensions, cats is merged with the original data set so that missing data information may be generated by dimension. The TRANSPOSE procedure was used to produce a data set where an observation exists for every variable and observation combination in the original data set. The extracted code is as follows: Proc transpose data=original data=odbyvar; By part; Run; The new data set odbyvar contains the new variables _name_ and col1. These variables store the variable names and the value of each variable from original, respectively. The data set odbyvar was used to create a count of the number of observations having and not having missing variable values. For example: proc freq data=odbyvar noprint; tables _name_/out=tnmis; where col1 ne.; proc freq data= ODBYVAR noprint; tables _name_/out=tmis; where col1 =.; The FREQ procedures create the count of observations from the original data set with missing and non-missing values on each variable. Since the data sets tnmis and tmis both have the variable _name_ they can be merged with cats1. 1 For example, the following simplified syntax demonstrates the merge: data MIS; merge CATS1(in=c) TMIS(in=ta rename=(count=nobmis)) TNMIS(rename=(count=nobnmis)); 1 The variable name in cats1 must be renamed to _name_ 2 if c and ta=c; drop percent; The new data set MIS contains: ITEMD Dimension 1 ITEMD2 - Dimension 2 _NAME name of original variables NOBMIS count of missing observations from original NOBNMIS count of non-missing observations from original Additional calculations were made from both the data sets cats and mis using the SUMMARY procedure: proc summary data=cats; output out=tv; proc summary data=mis; var nobmis; output out=tv2 sum=msrs mean=mnobmis; The first procedure creates the data set tv that contains a count of all variables, count of variables by each dimension, and count of variables by both dimensions (see Table 1). The second procedure produces the data set tv2 that contains the total and average observations missing within all combinations of the dimension variables. OVERVIEW OF MISSING DATA REPORTS This section discusses the production of HTML reports to view the various missing data information discussed above and generated by the %GVARCAT macro. Some independence between generating the missing data information and the HTML report production was desirable. This section will again present an overview with simplified syntax from the macros. Working with the Output Delivery System SAS ODS was used to output most of the HTML reports, however PUT in a DATA step were used to generate a couple of reports and a custom menu. The custom HTML and style statements were designed to take advantage of existing capabilities created by ODS. The following demonstrates syntax used for the generation of HTML using ODS. The macro variable dfp was used to define the root directory for the output. Note that the ODS statements were specifically designed to allow later addition of information to both the body and menu files: %let title = Example Items; %let dfp =c:\example\; filename new "&dfp.origmiss.html"; filename menu "&dfp.menu.html"; filename fram "&dfp.frame.html"; ods html body=new (no_bottom_matter) contents=menu (no_bottom_matter) frame=fram style=fancyprinter; %rep1;
3 The no_bottom_matter phrase following the declarations of the files was critical to allow later appending of custom information to the HTML. The phrase follows the declaration of both the body and menu files. As a result the body and menu files were created as normal, but the files did not contain concluding HTML when the files are closed. The lack of closing bottom_matter allowed additional HTML or other script to be appended to the files. For example, the following syntax allowed data step PUT statements produced by the macros %REP4 and %REP5 to append information to the body file: filename new "&dfp.root\origmiss.html" mod; %rep4; %rep5; The most crucial option in this statement was the use of mod which opens the file for editing rather than creating a new file. The follow ODS statement was then used to close the file, excluding top_matte : ods html file=new(no_top_matter)anchor='end'; Adding a Custom Menu to the ODS Menu File Missing data report number 5 lists all missing variables for each participant (observation) in the data set. Since the list may be quite long, it was useful to have a menu that allowed users to jump to the listings for specific groups of participants (e.g. 1-12, 13-24, 25-36). For example, clicking on the link for participants jumps to participant 13 in report 5 in the body file. The complete macros, %menu, %menustyl, %spanhead, %spanclos, are listed later in this paper, but as an overview, creation of the custom menu has two steps: Adding a new menu heading to the ODS menu Inserting links for each group of participants The original ODS statement specified a menu file, so menu items were constructed automatically by ODS for missing data reports 1-3. All three reports were generated from PRINT procedures that were executed within the ODS. In contrast, reports 4 and 5 were written directly into the body file through PUT statements outside ODS. No menu items were created for reports 4 & 5, however, similar to the body file, the menu file was created without adding closing HTML. ODS uses the <SPAN>, <DT>, and <DL> tags to help define each menu item, to enclose the links under the item, and to enable the click of the menu heading to toggle the visibility of the enclosed link. A new menu heading following the ODS convention was added by the macros %menustyl, %spanhead and %spanclose : <script language=javascript1.2> function lodit(v){ parent.body.location.href='origmiss.html#' + v } </script> <style type='text/css'> #menu1 { display : block; TEXT-ALIGN: center; BACKGROUND-COLOR: thistle} </style> <li><span>participants Missing Data</SPAN><br><dl><dt> <SPAN id='menu1'><b> </b> <a href=javascript:lodit('1') >1-5 </a><br> <a href=javascript:lodit('7') >7-13 </a><br> <a href=javascript:lodit('15') >15-20 </a><br> <a href=javascript:lodit('21') >21-25 </a><br> </SPAN><br></dl> The macro %menu was used to generate the participant groups that are linked to positions in the body file. The position of each participant listed for report 5 was denoted through the use of <A name=anchor> tag in the body file where ANCHOR was participant number. %menu(odbyvar2,part,mi=20,t=participa nts); The argument MI to the %menu macro dictates the number of participant groups to add to the menu. For example, with an MI=20, the macro will try to produce 20 groups of equal size from the observations. If there were 130 observations then 20 groups of 6 participant (1-5,7-13 etc.) would be created, the remaining participants listed in the last group. Note also that the numbers may not be continuous because some participants may not have missing data. MACRO EXECUTION The syntax in this section assumes all the macros in the sections to follow have been defined. In this example, the macro %GVARCAT is passed the name of a data set allc, and part, the variable uniquely identifying each observation. Creating Missing Data Information %gvarcat(allc,part,scat=); Creating HTML Reports %let title = Example Items; %let dfp =c:\example\; filename new "&dfp.root\origmiss.html"; filename menu "&dfp.root\menu.html"; filename fram "&dfp.root\frame.html"; ods html body=new (no_bottom_matter) contents=menu (no_bottom_matter) frame=fram style=fancyprinter; %rep1; %rep2; %rep3; filename new "&dfp.root\origmiss.html" mod; %rep4; %rep5; ods html file=new(no_top_matter)anchor='end'; filename menu "&dfp.root\menu.html" mod; file menu; put "<script language=javascript1.2>"; put "function lodit(v){"; put "parent.body.location.href='origmiss. html#' + v"; put "}"; put "</script>"; %menustyl; %spanhead; 3
4 %menu(odbyvar2,part,mi=20,t=participants); file menu; %spanclos; ods html file=menu(no_top_matter) anchor='end'; Missing Data Macros %macro gvarcat(od,oid,scat=,scat1=); proc contents data=&od noprint out=cats(keep=varnum name label nobs); data cats1 (keep=_name_ label itemd2 varnum itemd); set cats end=last; if name ne "&oid" then do; length _name_ $8; _name_ = put(name,$8.); type = substr(name,1,2); *first domain of variables; if type = "jj" then itemd = 1; else if type = "ed" then itemd = 2; else if type = "ad" then itemd = 3; else if type = "mh" then itemd = 4; * second domain of variables; per = substr(name,3,1); i = index(name,"_"); if i > 0 then do; t = substr(name,1,i-1); l = length(t)-3; tp = substr(name,4,l); if per = "b" then tp = 0; if tp = 0 then itemd2 = 1; else if tp = 3 then itemd2 = 2; else if tp = 6 then itemd2 = 3; else if tp = 9 then itemd2 = 4; else if tp = 12then itemd2 = 5; *formats domain indicators; format itemd2 dims.; format itemd dimf.; if itemd2 ne. and itemd ne. then output cats1; data cats; set cats1; %if &scat ne %then %do; if itemd =&scat then output; % %odbyvar(&od,&oid); %nobsmis(&od,odbyvar,&oid); %pmiscat(&od,odbyvar2,&oid); %m %macro odbyvar(od,oid); proc summary data=cats; output out=tv; proc sort data=cats; proc sort data=&od; by &oid; proc transpose data=&od out=odbyvar; by &oid; proc sort data=odbyvar out=l nodupkey; %m %macro nobsmis(od,d,oid); proc freq data=&d noprint; tables _name_/out=tnmis; where col1 ne.; proc freq data=&d noprint; tables _name_/out=tmis; where col1 =.; proc sql noprint; select count(&oid) into: numobs from &od; quit; data mis; merge cats(in=c) tmis(in=ta rename=(count=nobmis)) tnmis(in=t rename=(count=nobnmis)) l; if c and ta=c; label pnobmis = "% Obs Missing"; label itemd = "Dimension 1"; label itemd2 = "Dimension 2"; label nobnmis = "Obs Complete"; label allobs= "All Obs"; label nobmis = "Obs Missing"; label label = "Description"; label exrdents = "Expected Respondents"; label _name_ = "Variable"; allobs = sum(nobnmis,nobmis); pnobmis = 0; exrdents = &numobs; pnobmis = (nobmis/exrdents)*100; drop part varnum percent; *get total and average missing responses; proc summary data=mis; var nobmis; output out=tv2 sum=msrs mean=mnobmis; *total variables in each dimension; proc sort data=tv; by itemd itemd2; *total and average responses missing; proc sort data=tv2; by itemd itemd2; *tv3 is data set for report 1; data tv3; merge tv (rename=(_freq_=items)) tv2(drop=_freq_); by itemd itemd2; label itemd = "Dimension 1"; label itemd2 = "Dimension 2"; label exrs = "Expected Responses"; 4
5 label prsm = "% Responses Missing"; label msrs = "Missing Responses"; label mnobmis = "Average Responses Missing"; label items = "Variables"; label exrdents = "Expected Respondents"; exrdents = &numobs; exrs = items*exrdents; prsm = msrs/exrs*100; drop _type_; *each participant has observations 1 to number of variables; proc sort data=&d; proc sort data=mis; *merge variable categories with obs/variable dataset; * mis has "Obs Complete", "All Obs","Obs Missing", "Expected Respondents"; data odbyvar2; merge &d(in=d) mis(in=m); if m=d; if col1=.; %m Macros to Create a Missing Data Reports %macro rep1; proc print data=tv3 label noobs; var itemd itemd2 items exrdents exrs msrs prsm mnobmis; * var itemd itemd2 items exrdents exrs msrs prsm; title "&title"; format prsm pctfmt.; title2 "Report #1: Summary of Missing Data"; %m %macro rep2; proc print data=mis label noobs; var itemd itemd2 label _name_ nobmis pnobmis; title "&title"; title2 "Report #2: Respondents (Observations) Missing by Item"; %m %macro rep3; proc sort data=tipp2; by descending tmisp; proc print data=tipp2 label noobs; var part itemd itemd2 vmis tipp tmisp; title "&title"; title2 "Report3:Missing Items by Observation"; %m %macro rep4; proc sort data=tipp2; by itemd itemd2 descending misp part; file new; t = put(date(),mmddyy8.); put "<center>"; put "<h1>&title</h1>"; put "<h2>data Collection Guide</h2>"; put "<h3>" t "</h3></center>"; set tipp2 nobs=tot; file new; by itemd itemd2 descending misp part; if _n_ = 1 then do; put "<h2>report 4: Data Collection Needed for the Following Participants</h2>"; if first.itemd then do; put "<h3>" itemd "</h2>"; if first.itemd2 then do; put "<table border=1 width=700> <tr><td colspan=2><b>" itemd2 "</b></td></tr>"; put "<tr><td>% Items Missing<td>Participants</tr>"; if first.misp then do; put "<tr><td>" tmisp "<td>"; put "<a href=#" part ">" part "</a>"; if last.itemd2 then put "</tr></table><br>"; %m %macro rep5; *filename new "&dfp.root\origmiss.html" mod; *items needed within participant; %let block = "block"; proc sort data=odbyvar2; by part itemd2 itemd _name_; set odbyvar2 nobs=tot; by part itemd2 itemd _name_; retain col 0; file new; if first.part then do; put "<h1>participant # <a name=" part ">" part "</a> is Missing the Following Items: </h1>"; if first.itemd2 then do; put "<table border=1 width=700>"; if first.itemd then do; put "<tr><td 5
6 colspan=4><h3>" itemd2 itemd "</h3><br></tr><tr>"; col = 0; col = col + 1; put "<td> " _label_ "<br>"; if mod(col,4) = 0 then put "<tr>"; if last.itemd2 then do; put "</table>"; %m Macros to Add a Custom Menu to the ODS Menu %macro menustyl; put "<style type='text/css'>"; put " #menu1 { display : block; TEXT- ALIGN: center; BACKGROUND-COLOR: thistle}"; put "</style>"; %m %macro spanhead; put "<li><span>participants Missing Data</SPAN><br><dl><dt>"; put "<SPAN id='menu1'><b> </b>"; %m %macro spanclos; put "</SPAN><br></dl>"; %m %macro menu(d,uid,mi=10,t=); proc sort data=&d nodupkey out=parts; by part; file menu; set parts nobs=t; retain p w r s sc lr ur 0; if _n_ = 1 then do; p = &mi; *number of equal segments; w = floor(t/p); *width of each segment; r = t - p*w; *remaining obs past last equal segment; lr = &uid; * begin with first obs; s =1; *segment 1; if sc = 0 then lr = part; if s <= p then do; *doing one of the equal segments; sc = sc + 1; *within segment count; if sc = w then do; *at the upper value of the segment; ur = &uid; pt = "'" trim(left(lr)) "')"; put "<a href=javascript:lodit(" pt ">" lr "-" ur "</a><br>"; s = s + 1; sc = 0; else do; *do remaining obs after last segment; sc= sc + 1; if r > 0 and _n_ = t then do; ur = &uid; pt = "'" trim(left(lr)) "')"; put "<a href=javascript:lodit(" pt ">" lr "-" ur "</a>"; %m CONCLUSION The missing data reports presented here have been useful in providing swift feedback on the progress of data collection activities. The reports and the organization of the reports in HTML are in a continuous process of refinement based on the needs of staff. But, producing the reports as a scheduled output has reduced ad hoc requests for specific reports on missing data. REFERENCES SAS Institute, Inc. The Complete Guide to the ODS Output Delivery System, Version 8, Cary, NC: SAS Institute Inc., CONTACT INFORMATION Your comments and questions are valued and encouraged. Contact the author at: Patrick Thornton, Ph.D. Child Services Research Group UCSF 1388 Sutter Street Suite 503 San Francisco, CA Work Phone: Fax: Address: pthornt@itsa.ucsf.edu 6
Macros to Report Missing Data: An HTML Data Collection Guide Patrick Thornton, University of California San Francisco, SF, California
Macros to Report Missing Data: An HTML Data Collection Guide Patrick Thornton, University of California San Francisco, SF, California ABSTRACT This paper presents SAS macro programs that calculate missing
More informationUsing PROC REPORT to Cross-Tabulate Multiple Response Items Patrick Thornton, SRI International, Menlo Park, CA
Using PROC REPORT to Cross-Tabulate Multiple Response Items Patrick Thornton, SRI International, Menlo Park, CA ABSTRACT This paper describes for an intermediate SAS user the use of PROC REPORT to create
More informationAbstract. Background. Summary of method. Using SAS to determine file and space usage in UNIX. Title: Mike Montgomery [MIS Manager, MTN (South Africa)]
Title: Author: Using SAS to determine file and space usage in UNIX Mike Montgomery [MIS Manager, MTN (South Africa)] Abstract The paper will show tools developed to manage a proliferation of SAS files
More informationEssential ODS Techniques for Creating Reports in PDF Patrick Thornton, SRI International, Menlo Park, CA
Thornton, S. P. (2006). Essential ODS techniques for creating reports in PDF. Paper presented at the Fourteenth Annual Western Users of the SAS Software Conference, Irvine, CA. Essential ODS Techniques
More informationINTRODUCTION TO SAS HOW SAS WORKS READING RAW DATA INTO SAS
TO SAS NEED FOR SAS WHO USES SAS WHAT IS SAS? OVERVIEW OF BASE SAS SOFTWARE DATA MANAGEMENT FACILITY STRUCTURE OF SAS DATASET SAS PROGRAM PROGRAMMING LANGUAGE ELEMENTS OF THE SAS LANGUAGE RULES FOR SAS
More informationUsing Templates Created by the SAS/STAT Procedures
Paper 081-29 Using Templates Created by the SAS/STAT Procedures Yanhong Huang, Ph.D. UMDNJ, Newark, NJ Jianming He, Solucient, LLC., Berkeley Heights, NJ ABSTRACT SAS procedures provide a large quantity
More informationET01. LIBNAME libref <engine-name> <physical-file-name> <libname-options>; <SAS Code> LIBNAME libref CLEAR;
ET01 Demystifying the SAS Excel LIBNAME Engine - A Practical Guide Paul A. Choate, California State Developmental Services Carol A. Martell, UNC Highway Safety Research Center ABSTRACT This paper is a
More informationA Generalized Macro-Based Data Reporting System to Produce Both HTML and Text Files
A Generalized Macro-Based Data Reporting System to Produce Both HTML and Text Files Jeff F. Sun, Blue Cross Blue Shield of North Carolina, Durham, North Carolina Abstract This paper will address the inter-connection
More informationBetter Metadata Through SAS II: %SYSFUNC, PROC DATASETS, and Dictionary Tables
Paper 3458-2015 Better Metadata Through SAS II: %SYSFUNC, PROC DATASETS, and Dictionary Tables ABSTRACT Louise Hadden, Abt Associates Inc., Cambridge, MA SAS provides a wealth of resources for users to
More informationA Practical and Efficient Approach in Generating AE (Adverse Events) Tables within a Clinical Study Environment
A Practical and Efficient Approach in Generating AE (Adverse Events) Tables within a Clinical Study Environment Abstract Jiannan Hu Vertex Pharmaceuticals, Inc. When a clinical trial is at the stage of
More informationThe Power of PROC SQL Techniques and SAS Dictionary Tables in Handling Data
Paper PO31 The Power of PROC SQL Techniques and SAS Dictionary Tables in Handling Data MaryAnne DePesquo Hope, Health Services Advisory Group, Phoenix, Arizona Fen Fen Li, Health Services Advisory Group,
More informationUsing PROC SQL to Generate Shift Tables More Efficiently
ABSTRACT SESUG Paper 218-2018 Using PROC SQL to Generate Shift Tables More Efficiently Jenna Cody, IQVIA Shift tables display the change in the frequency of subjects across specified categories from baseline
More informationABSTRACT INTRODUCTION TRICK 1: CHOOSE THE BEST METHOD TO CREATE MACRO VARIABLES
An Efficient Method to Create a Large and Comprehensive Codebook Wen Song, ICF International, Calverton, MD Kamya Khanna, ICF International, Calverton, MD Baibai Chen, ICF International, Calverton, MD
More informationChapter 6: Modifying and Combining Data Sets
Chapter 6: Modifying and Combining Data Sets The SET statement is a powerful statement in the DATA step. Its main use is to read in a previously created SAS data set which can be modified and saved as
More informationPosters. Paper
Paper 212-26 Using SAS/AF to Create a SAS Program File Explorer Rob Nelson, Centers for Disease Control and Prevention, Atlanta, GA Janet Royalty, Centers for Disease Control and Prevention, Atlanta, GA
More informationSyntax Conventions for SAS Programming Languages
Syntax Conventions for SAS Programming Languages SAS Syntax Components Keywords A keyword is one or more literal name components of a language element. Keywords are uppercase, and in reference documentation,
More informationCleaning Duplicate Observations on a Chessboard of Missing Values Mayrita Vitvitska, ClinOps, LLC, San Francisco, CA
Cleaning Duplicate Observations on a Chessboard of Missing Values Mayrita Vitvitska, ClinOps, LLC, San Francisco, CA ABSTRACT Removing duplicate observations from a data set is not as easy as it might
More informationUsing SAS Macro to Include Statistics Output in Clinical Trial Summary Table
Using SAS Macro to Include Statistics Output in Clinical Trial Summary Table Amy C. Young, Ischemia Research and Education Foundation, San Francisco, CA Sharon X. Zhou, Ischemia Research and Education
More informationHTML Summary. All of the following are containers. Structure. Italics Bold. Line Break. Horizontal Rule. Non-break (hard) space.
HTML Summary Structure All of the following are containers. Structure Contains the entire web page. Contains information
More informationMy Reporting Requires a Full Staff Help!
ABSTRACT Paper GH-03 My Reporting Requires a Full Staff Help! Erin Lynch, Daniel O Connor, Himesh Patel, SAS Institute Inc., Cary, NC With cost cutting and reduced staff, everyone is feeling the pressure
More informationSAS Online Training: Course contents: Agenda:
SAS Online Training: Course contents: Agenda: (1) Base SAS (6) Clinical SAS Online Training with Real time Projects (2) Advance SAS (7) Financial SAS Training Real time Projects (3) SQL (8) CV preparation
More informationMacros for Two-Sample Hypothesis Tests Jinson J. Erinjeri, D.K. Shifflet and Associates Ltd., McLean, VA
Paper CC-20 Macros for Two-Sample Hypothesis Tests Jinson J. Erinjeri, D.K. Shifflet and Associates Ltd., McLean, VA ABSTRACT Statistical Hypothesis Testing is performed to determine whether enough statistical
More informationBase and Advance SAS
Base and Advance SAS BASE SAS INTRODUCTION An Overview of the SAS System SAS Tasks Output produced by the SAS System SAS Tools (SAS Program - Data step and Proc step) A sample SAS program Exploring SAS
More informationA Side of Hash for You To Dig Into
A Side of Hash for You To Dig Into Shan Ali Rasul, Indigo Books & Music Inc, Toronto, Ontario, Canada. ABSTRACT Within the realm of Customer Relationship Management (CRM) there is always a need for segmenting
More informationPharmaSUG Paper PO12
PharmaSUG 2015 - Paper PO12 ABSTRACT Utilizing SAS for Cross-Report Verification in a Clinical Trials Setting Daniel Szydlo, Fred Hutchinson Cancer Research Center, Seattle, WA Iraj Mohebalian, Fred Hutchinson
More informationCreating Macro Calls using Proc Freq
Creating Macro Calls using Proc Freq, Educational Testing Service, Princeton, NJ ABSTRACT Imagine you were asked to get a series of statistics/tables for each country in the world. You have the data, but
More informationHow to Keep Multiple Formats in One Variable after Transpose Mindy Wang
How to Keep Multiple Formats in One Variable after Transpose Mindy Wang Abstract In clinical trials and many other research fields, proc transpose are used very often. When many variables with their individual
More informationChapter 4 Creating Tables in a Web Site Using an External Style Sheet
Chapter 4 Creating Tables in a Web Site Using an External Style Sheet MULTIPLE RESPONSE Modified Multiple Choice 1. Attributes are set relative to the elements in a table. a. line c. row b. column d. cell
More informationDon t Forget About SMALL Data
Don t Forget About SMALL Data Lisa Eckler Lisa Eckler Consulting Inc. September 25, 2015 Outline Why does Small Data matter? Defining Small Data Where to look for it How to use it examples What else might
More informationSAS (Statistical Analysis Software/System)
SAS (Statistical Analysis Software/System) SAS Analytics:- Class Room: Training Fee & Duration : 23K & 3 Months Online: Training Fee & Duration : 25K & 3 Months Learning SAS: Getting Started with SAS Basic
More informationDESCRIPTION OF THE PROJECT
Skinning the Cat This Way and That: Using ODS to Create Word Documents That Work for You Elizabeth Axelrod, Abt Associates Inc., Cambridge, MA David Shamlin, SAS Institute Inc., Cary, NC ABSTRACT By supporting
More informationSAS (Statistical Analysis Software/System)
SAS (Statistical Analysis Software/System) Clinical SAS:- Class Room: Training Fee & Duration : 23K & 3 Months Online: Training Fee & Duration : 25K & 3 Months Learning SAS: Getting Started with SAS Basic
More informationKEPT IN TRANSLATION: AVOIDING DATA LOSS AND OTHER PROBLEMS WHEN CONVERTING JAPANESE DATA
PAPER TS05 KEPT IN TRANSLATION: AVOIDING DATA LOSS AND OTHER PROBLEMS WHEN CONVERTING JAPANESE DATA Steve Prust, Covance, Leeds, UK ABSTRACT This paper details a method of translating and converting data
More informationPaper DB2 table. For a simple read of a table, SQL and DATA step operate with similar efficiency.
Paper 76-28 Comparative Efficiency of SQL and Base Code When Reading from Database Tables and Existing Data Sets Steven Feder, Federal Reserve Board, Washington, D.C. ABSTRACT In this paper we compare
More informationAs we design and build out our HTML pages, there are some basics that we may follow for each page, site, and application.
Extra notes - Client-side Design and Development Dr Nick Hayward HTML - Basics A brief introduction to some of the basics of HTML. Contents Intro element add some metadata define a base address
More informationKeeping Track of Database Changes During Database Lock
Paper CC10 Keeping Track of Database Changes During Database Lock Sanjiv Ramalingam, Biogen Inc., Cambridge, USA ABSTRACT Higher frequency of data transfers combined with greater likelihood of changes
More informationAn Easy Route to a Missing Data Report with ODS+PROC FREQ+A Data Step Mike Zdeb, FSL, University at Albany School of Public Health, Rensselaer, NY
SESUG 2016 Paper BB-170 An Easy Route to a Missing Data Report with ODS+PROC FREQ+A Data Step Mike Zdeb, FSL, University at Albany School of Public Health, Rensselaer, NY ABSTRACT A first step in analyzing
More informationGetting it Done with PROC TABULATE
ABSTRACT Getting it Done with PROC TABULATE Michael J. Williams, ICON Clinical Research, San Francisco, CA The task of displaying statistical summaries of different types of variables in a single table
More informationCHAPTER 2 MARKUP LANGUAGES: XHTML 1.0
WEB TECHNOLOGIES A COMPUTER SCIENCE PERSPECTIVE CHAPTER 2 MARKUP LANGUAGES: XHTML 1.0 Modified by Ahmed Sallam Based on original slides by Jeffrey C. Jackson reserved. 0-13-185603-0 HTML HELLO WORLD! Document
More informationSD10 A SAS MACRO FOR PERFORMING BACKWARD SELECTION IN PROC SURVEYREG
Paper SD10 A SAS MACRO FOR PERFORMING BACKWARD SELECTION IN PROC SURVEYREG Qixuan Chen, University of Michigan, Ann Arbor, MI Brenda Gillespie, University of Michigan, Ann Arbor, MI ABSTRACT This paper
More informationIn this paper, we will build the macro step-by-step, highlighting each function. A basic familiarity with SAS Macro language is assumed.
No More Split Ends: Outputting Multiple CSV Files and Keeping Related Records Together Gayle Springer, JHU Bloomberg School of Public Health, Baltimore, MD ABSTRACT The EXPORT Procedure allows us to output
More informationQuick Data Definitions Using SQL, REPORT and PRINT Procedures Bradford J. Danner, PharmaNet/i3, Tennessee
ABSTRACT PharmaSUG2012 Paper CC14 Quick Data Definitions Using SQL, REPORT and PRINT Procedures Bradford J. Danner, PharmaNet/i3, Tennessee Prior to undertaking analysis of clinical trial data, in addition
More informationSAS Survey Report Macro for Creating User-Friendly Descriptive Summaries
SESUG Paper BB-119-2017 SAS Survey Report Macro for Creating User-Friendly Descriptive Summaries Tammiee Dickenson, University of South Carolina; Jessalyn Smith, Data Recognition Corporation; Grant Morgan,
More informationPaper S Data Presentation 101: An Analyst s Perspective
Paper S1-12-2013 Data Presentation 101: An Analyst s Perspective Deanna Chyn, University of Michigan, Ann Arbor, MI Anca Tilea, University of Michigan, Ann Arbor, MI ABSTRACT You are done with the tedious
More informationAn Introduction to SAS/FSP Software Terry Fain, RAND, Santa Monica, California Cyndie Gareleck, RAND, Santa Monica, California
An Introduction to SAS/FSP Software Terry Fain, RAND, Santa Monica, California Cyndie Gareleck, RAND, Santa Monica, California ABSTRACT SAS/FSP is a set of procedures used to perform full-screen interactive
More informationFrom Manual to Automatic with Overdrive - Using SAS to Automate Report Generation Faron Kincheloe, Baylor University, Waco, TX
Paper 152-27 From Manual to Automatic with Overdrive - Using SAS to Automate Report Generation Faron Kincheloe, Baylor University, Waco, TX ABSTRACT This paper is a case study of how SAS products were
More informationTo conceptualize the process, the table below shows the highly correlated covariates in descending order of their R statistic.
Automating the process of choosing among highly correlated covariates for multivariable logistic regression Michael C. Doherty, i3drugsafety, Waltham, MA ABSTRACT In observational studies, there can be
More informationDeccansoft Software Services
Deccansoft Software Services (A Microsoft Learning Partner) HTML and CSS COURSE SYLLABUS Module 1: Web Programming Introduction In this module you will learn basic introduction to web development. Module
More informationHow to Incorporate Old SAS Data into a New DATA Step, or What is S-M-U?
Paper 54-25 How to Incorporate Old SAS Data into a New DATA Step, or What is S-M-U? Andrew T. Kuligowski Nielsen Media Research Abstract / Introduction S-M-U. Some people will see these three letters and
More informationData Presentation ABSTRACT
ODS HTML Meets Real World Requirements Lisa Eckler, Lisa Eckler Consulting Inc., Toronto, ON Robert W. Simmonds, TD Bank Financial Group, Toronto, ON ABSTRACT This paper describes a customized information
More informationDeveloping Data-Driven SAS Programs Using Proc Contents
Developing Data-Driven SAS Programs Using Proc Contents Robert W. Graebner, Quintiles, Inc., Kansas City, MO ABSTRACT It is often desirable to write SAS programs that adapt to different data set structures
More informationRWI not REI a Robust report writing tool for your toughest mountaineering challenges.
Paper SAS2105 RWI not REI a Robust report writing tool for your toughest mountaineering challenges. Robert T. Durie SAS Institute ABSTRACT The degree of customization required for different kinds of reports
More informationThe Dataset Attribute Family of Classes Mark Tabladillo, Ph.D., Atlanta, GA
The Dataset Attribute Family of Classes Mark Tabladillo, Ph.D., Atlanta, GA ABSTRACT This presentation will specifically present the dataset attribute family, an abstract parent and its twenty-five children.
More informationA SAS Macro Utility to Modify and Validate RTF Outputs for Regional Analyses Jagan Mohan Achi, PPD, Austin, TX Joshua N. Winters, PPD, Rochester, NY
PharmaSUG 2014 - Paper BB14 A SAS Macro Utility to Modify and Validate RTF Outputs for Regional Analyses Jagan Mohan Achi, PPD, Austin, TX Joshua N. Winters, PPD, Rochester, NY ABSTRACT Clinical Study
More informationData Should Not be a Four Letter Word Microsoft Excel QUICK TOUR
Toolbar Tour AutoSum + more functions Chart Wizard Currency, Percent, Comma Style Increase-Decrease Decimal Name Box Chart Wizard QUICK TOUR Name Box AutoSum Numeric Style Chart Wizard Formula Bar Active
More informationThe Proc Transpose Cookbook
ABSTRACT PharmaSUG 2017 - Paper TT13 The Proc Transpose Cookbook Douglas Zirbel, Wells Fargo and Co. Proc TRANSPOSE rearranges columns and rows of SAS datasets, but its documentation and behavior can be
More informationCopy That! Using SAS to Create Directories and Duplicate Files
Copy That! Using SAS to Create Directories and Duplicate Files, SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and
More informationAssignments (4) Assessment as per Schedule (2)
Specification (6) Readability (4) Assignments (4) Assessment as per Schedule (2) Oral (4) Total (20) Sign of Faculty Assignment No. 02 Date of Performance:. Title: To apply various CSS properties like
More informationSquare Peg, Square Hole Getting Tables to Fit on Slides in the ODS Destination for PowerPoint
PharmaSUG 2018 - Paper DV-01 Square Peg, Square Hole Getting Tables to Fit on Slides in the ODS Destination for PowerPoint Jane Eslinger, SAS Institute Inc. ABSTRACT An output table is a square. A slide
More informationAn Efficient Tool for Clinical Data Check
PharmaSUG 2018 - Paper AD-16 An Efficient Tool for Clinical Data Check Chao Su, Merck & Co., Inc., Rahway, NJ Shunbing Zhao, Merck & Co., Inc., Rahway, NJ Cynthia He, Merck & Co., Inc., Rahway, NJ ABSTRACT
More informationSAS Macro Technique for Embedding and Using Metadata in Web Pages. DataCeutics, Inc., Pottstown, PA
Paper AD11 SAS Macro Technique for Embedding and Using Metadata in Web Pages Paul Gilbert, Troy A. Ruth, Gregory T. Weber DataCeutics, Inc., Pottstown, PA ABSTRACT This paper will present a technique to
More informationUsing SAS to Analyze CYP-C Data: Introduction to Procedures. Overview
Using SAS to Analyze CYP-C Data: Introduction to Procedures CYP-C Research Champion Webinar July 14, 2017 Jason D. Pole, PhD Overview SAS overview revisited Introduction to SAS Procedures PROC FREQ PROC
More informationContents of SAS Programming Techniques
Contents of SAS Programming Techniques Chapter 1 About SAS 1.1 Introduction 1.1.1 SAS modules 1.1.2 SAS module classification 1.1.3 SAS features 1.1.4 Three levels of SAS techniques 1.1.5 Chapter goal
More informationKnit Perl and SAS Software for DIY Web Applications
Knit Perl and SAS Software for DIY Web Applications Abstract Philip R Holland, Consultant, Holland Numerics Limited, UK If your organisation develops a web-based SAS application for 30+ users, then the
More informationA Revolution? Development of Dynamic And Hypertext Linked Reports With Internet Technologies and SAS System
A Revolution? Development of Dynamic And Hypertext Linked Reports With Internet Technologies and SAS System Jeff F. Sun, Blue Cross Blue Shield of North Carolina, Durham, North Carolina Abstract The current
More informationHTML and CSS COURSE SYLLABUS
HTML and CSS COURSE SYLLABUS Overview: HTML and CSS go hand in hand for developing flexible, attractively and user friendly websites. HTML (Hyper Text Markup Language) is used to show content on the page
More informationBY S NOTSORTED OPTION Karuna Samudral, Octagon Research Solutions, Inc., Wayne, PA Gregory M. Giddings, Centocor R&D Inc.
ABSTRACT BY S NOTSORTED OPTION Karuna Samudral, Octagon Research Solutions, Inc., Wayne, PA Gregory M. Giddings, Centocor R&D Inc., Malvern, PA What if the usual sort and usual group processing would eliminate
More informationUncommon Techniques for Common Variables
Paper 11863-2016 Uncommon Techniques for Common Variables Christopher J. Bost, MDRC, New York, NY ABSTRACT If a variable occurs in more than one data set being merged, the last value (from the variable
More informationTales from the Help Desk 6: Solutions to Common SAS Tasks
SESUG 2015 ABSTRACT Paper BB-72 Tales from the Help Desk 6: Solutions to Common SAS Tasks Bruce Gilsen, Federal Reserve Board, Washington, DC In 30 years as a SAS consultant at the Federal Reserve Board,
More informationAre you Still Afraid of Using Arrays? Let s Explore their Advantages
Paper CT07 Are you Still Afraid of Using Arrays? Let s Explore their Advantages Vladyslav Khudov, Experis Clinical, Kharkiv, Ukraine ABSTRACT At first glance, arrays in SAS seem to be a complicated and
More informationCMISS the SAS Function You May Have Been MISSING Mira Shapiro, Analytic Designers LLC, Bethesda, MD
ABSTRACT SESUG 2016 - RV-201 CMISS the SAS Function You May Have Been MISSING Mira Shapiro, Analytic Designers LLC, Bethesda, MD Those of us who have been using SAS for more than a few years often rely
More informationABSTRACT INTRODUCTION MACRO. Paper RF
Paper RF-08-2014 Burst Reporting With the Help of PROC SQL Dan Sturgeon, Priority Health, Grand Rapids, Michigan Erica Goodrich, Priority Health, Grand Rapids, Michigan ABSTRACT Many SAS programmers need
More informationEXAMPLE 3: MATCHING DATA FROM RESPONDENTS AT 2 OR MORE WAVES (LONG FORMAT)
EXAMPLE 3: MATCHING DATA FROM RESPONDENTS AT 2 OR MORE WAVES (LONG FORMAT) DESCRIPTION: This example shows how to combine the data on respondents from the first two waves of Understanding Society into
More informationData Quality Review for Missing Values and Outliers
Paper number: PH03 Data Quality Review for Missing Values and Outliers Ying Guo, i3, Indianapolis, IN Bradford J. Danner, i3, Lincoln, NE ABSTRACT Before performing any analysis on a dataset, it is often
More information3. Almost always use system options options compress =yes nocenter; /* mostly use */ options ps=9999 ls=200;
Randy s SAS hints, updated Feb 6, 2014 1. Always begin your programs with internal documentation. * ***************** * Program =test1, Randy Ellis, first version: March 8, 2013 ***************; 2. Don
More informationA Quick and Gentle Introduction to PROC SQL
ABSTRACT Paper B2B 9 A Quick and Gentle Introduction to PROC SQL Shane Rosanbalm, Rho, Inc. Sam Gillett, Rho, Inc. If you are afraid of SQL, it is most likely because you haven t been properly introduced.
More informationSo Much Data, So Little Time: Splitting Datasets For More Efficient Run Times and Meeting FDA Submission Guidelines
Paper TT13 So Much Data, So Little Time: Splitting Datasets For More Efficient Run Times and Meeting FDA Submission Guidelines Anthony Harris, PPD, Wilmington, NC Robby Diseker, PPD, Wilmington, NC ABSTRACT
More informationExporting Variable Labels as Column Headers in Excel using SAS Chaitanya Chowdagam, MaxisIT Inc., Metuchen, NJ
Paper 74924-2011 Exporting Variable Labels as Column Headers in Excel using SAS Chaitanya Chowdagam, MaxisIT Inc., Metuchen, NJ ABSTRACT Excel output is the desired format for most of the ad-hoc reports
More informationLab 7 Macros, Modules, Data Access Pages and Internet Summary Macros: How to Create and Run Modules vs. Macros 1. Jumping to Internet
Lab 7 Macros, Modules, Data Access Pages and Internet Summary Macros: How to Create and Run Modules vs. Macros 1. Jumping to Internet 1. Macros 1.1 What is a macro? A macro is a set of one or more actions
More informationCorrecting for natural time lag bias in non-participants in pre-post intervention evaluation studies
Correcting for natural time lag bias in non-participants in pre-post intervention evaluation studies Gandhi R Bhattarai PhD, OptumInsight, Rocky Hill, CT ABSTRACT Measuring the change in outcomes between
More informationQuick Results with the Output Delivery System
Paper 58-27 Quick Results with the Output Delivery System Sunil K. Gupta, Gupta Programming, Simi Valley, CA ABSTRACT SAS s new Output Delivery System (ODS) opens a whole new world of options in generating
More informationA SAS Macro for Producing Benchmarks for Interpreting School Effect Sizes
A SAS Macro for Producing Benchmarks for Interpreting School Effect Sizes Brian E. Lawton Curriculum Research & Development Group University of Hawaii at Manoa Honolulu, HI December 2012 Copyright 2012
More informationA Format to Make the _TYPE_ Field of PROC MEANS Easier to Interpret Matt Pettis, Thomson West, Eagan, MN
Paper 045-29 A Format to Make the _TYPE_ Field of PROC MEANS Easier to Interpret Matt Pettis, Thomson West, Eagan, MN ABSTRACT: PROC MEANS analyzes datasets according to the variables listed in its Class
More information2. Don t forget semicolons and RUN statements The two most common programming errors.
Randy s SAS hints March 7, 2013 1. Always begin your programs with internal documentation. * ***************** * Program =test1, Randy Ellis, March 8, 2013 ***************; 2. Don t forget semicolons and
More informationTIPS AND TRICKS: IMPROVE EFFICIENCY TO YOUR SAS PROGRAMMING
TIPS AND TRICKS: IMPROVE EFFICIENCY TO YOUR SAS PROGRAMMING Guillaume Colley, Lead Data Analyst, BCCFE Page 1 Contents Customized SAS Session Run system options as SAS starts Labels management Shortcut
More informationPaper An Automated Reporting Macro to Create Cell Index An Enhanced Revisit. Shi-Tao Yeh, GlaxoSmithKline, King of Prussia, PA
ABSTRACT Paper 236-28 An Automated Reporting Macro to Create Cell Index An Enhanced Revisit When generating tables from SAS PROC TABULATE or PROC REPORT to summarize data, sometimes it is necessary to
More informationMIS Reporting in the Credit Card Industry
MIS Reporting in the Credit Card Industry Tom Hotard, Acxiom Corporation ABSTRACT In credit card acquisition campaigns, it is important to have the ability to keep track of various types of counts. After
More informationUSING PROC GMAP AND DRILL-DOWN GRAPHICS FOR DATA QUALITY ASSURANCE Meghan Arbogast, Computer Sciences Corporation, Corvallis, OR
USING PROC GMAP AND DRILL-DOWN GRAPHICS FOR DATA QUALITY ASSURANCE Meghan Arbogast, Computer Sciences Corporation, Corvallis, OR ABSTRACT Maps are particularly useful to review the distribution of biological
More informationGet SAS sy with PROC SQL Amie Bissonett, Pharmanet/i3, Minneapolis, MN
PharmaSUG 2012 - Paper TF07 Get SAS sy with PROC SQL Amie Bissonett, Pharmanet/i3, Minneapolis, MN ABSTRACT As a data analyst for genetic clinical research, I was often working with familial data connecting
More informationABSTRACT INTRODUCTION WORK FLOW AND PROGRAM SETUP
A SAS Macro Tool for Selecting Differentially Expressed Genes from Microarray Data Huanying Qin, Laia Alsina, Hui Xu, Elisa L. Priest Baylor Health Care System, Dallas, TX ABSTRACT DNA Microarrays measure
More informationIndenting with Style
ABSTRACT Indenting with Style Bill Coar, Axio Research, Seattle, WA Within the pharmaceutical industry, many SAS programmers rely heavily on Proc Report. While it is used extensively for summary tables
More informationMaking a SYLK file from SAS data. Another way to Excel using SAS
Making a SYLK file from SAS data or Another way to Excel using SAS Cynthia A. Stetz, Acceletech, Bound Brook, NJ ABSTRACT Transferring data between SAS and other applications engages most of us at least
More informationData Acquisition and Integration
CHAPTER Data Acquisition and Integration 2 2.1 INTRODUCTION This chapter first provides a brief review of data sources and types of variables from the point of view of data mining. Then it presents the
More informationEfficient Processing of Long Lists of Variable Names
Efficient Processing of Long Lists of Variable Names Paulette W. Staum, Paul Waldron Consulting, West Nyack, NY ABSTRACT Many programmers use SAS macro language to manipulate lists of variable names. They
More informationOpen Problem for SUAVe User Group Meeting, November 26, 2013 (UVic)
Open Problem for SUAVe User Group Meeting, November 26, 2013 (UVic) Background The data in a SAS dataset is organized into variables and observations, which equate to rows and columns. While the order
More informationAD07 A Tool to Automate TFL Bundling
AD07 A Tool to Automate TFL Bundling Mark Crangle ICON Clinical Research Introduction Typically, requirement for a TFL package is a bookmarked PDF file with a table of contents Often this means combining
More information3N Validation to Validate PROC COMPARE Output
ABSTRACT Paper 7100-2016 3N Validation to Validate PROC COMPARE Output Amarnath Vijayarangan, Emmes Services Pvt Ltd, India In the clinical research world, data accuracy plays a significant role in delivering
More informationMultiple Graphical and Tabular Reports on One Page, Multiple Ways to Do It Niraj J Pandya, CT, USA
Paper TT11 Multiple Graphical and Tabular Reports on One Page, Multiple Ways to Do It Niraj J Pandya, CT, USA ABSTRACT Creating different kind of reports for the presentation of same data sounds a normal
More informationFly over, drill down, and explore
ABSTRACT Paper 79-2013 Fly over, drill down, and explore Suzanne Brown, HealthInsight New Mexico, Albuquerque, NM Data often have a spatial dimension, whether it is a five-year financial plan and annual
More informationGet into the Groove with %SYSFUNC: Generalizing SAS Macros with Conditionally Executed Code
Get into the Groove with %SYSFUNC: Generalizing SAS Macros with Conditionally Executed Code Kathy Hardis Fraeman, United BioSource Corporation, Bethesda, MD ABSTRACT %SYSFUNC was originally developed in
More information