SDTM DM DATASET QUALITY CONTROL AND PRACTICAL VALIDATION EXERCISES USING PROC SORT | PROC PRINT | PROC FREQ | PROC MEANS | PROC SQL
SDTM DM PRACTICE DATASET
One record per subject
data work.sdtm_dm;
length
STUDYID $12
DOMAIN $2
USUBJID $25
SUBJID $10
SITEID $5
COUNTRY $15
SEX $1
RACE $20
ETHNIC $30
AGE 8
AGEU $10
ARMCD $8
ARM $20
ACTARMCD $8
ACTARM $20
INVID $10
INVNAM $30
BRTHDTC $10
RFSTDTC $10
RFENDTC $10
DMDTC $10
;
input
STUDYID $
USUBJID $
SUBJID $
SITEID $
COUNTRY $
SEX $
RACE $
ETHNIC $
AGE
AGEU $
ARMCD $
ARM $
ACTARMCD $
ACTARM $
BRTHDTC $
RFSTDTC $
RFENDTC $
DMDTC $
INVID $
INVNAM $
;
DOMAIN = "DM";
drop ACTARMCD ACTARM;
datalines;
STUDY001 STUDY001-IND-001 001 1001 INDIA M ASIAN NOT_HISPANIC 34 YEARS TRT01 DRUG_A TRT01 DRUG_A 1990-05-10 2023-01-10 2023-06-10 2023-01-05 INV01 DR_RAO
STUDY001 STUDY001-IND-002 002 1001 INDIA F ASIAN NOT_HISPANIC 29 YEARS TRT02 DRUG_B TRT02 DRUG_B 1995-08-21 2023-01-12 2023-06-15 2023-01-07 INV01 DR_RAO
STUDY001 STUDY001-USA-003 003 2001 USA M WHITE NOT_HISPANIC 45 YEARS TRT01 DRUG_A TRT01 DRUG_A 1978-03-14 2023-02-01 2023-07-01 2023-01-25 INV02 DR_SMITH
STUDY001 STUDY001-USA-004 004 2001 USA F BLACK OR_AFRICAN_AMERICAN_HISPANIC 38 YEARS TRT02 DRUG_B TRT02 DRUG_B 1986-11-02 2023-02-05 2023-07-10 2023-01-28 INV02 DR_SMITH
STUDY001 STUDY001-JPN-005 005 3001 JAPAN M ASIAN NOT_HISPANIC 52 YEARS TRT01 DRUG_A TRT01 DRUG_A 1971-07-09 2023-03-01 2023-08-01 2023-02-20 INV03 DR_TANAKA
STUDY001 STUDY001-JPN-006 006 3001 JAPAN F ASIAN NOT_HISPANIC 47 YEARS TRT02 DRUG_B TRT02 DRUG_B 1976-01-18 2023-03-05 2023-08-05 2023-02-22 INV03 DR_TANAKA
STUDY001 STUDY001-UK-007 007 4001 UK M WHITE NOT_HISPANIC 60 YEARS TRT01 DRUG_A TRT01 DRUG_A 1963-09-25 2023-04-01 2023-09-01 2023-03-18 INV04 DR_BROWN
STUDY001 STUDY001-UK-008 008 4001 UK F WHITE NOT_HISPANIC 55 YEARS TRT02 DRUG_B TRT02 DRUG_B 1968-12-11 2023-04-03 2023-09-05 2023-03-20 INV04 DR_BROWN
STUDY001 STUDY001-AUS-009 009 5001 AUSTRALIA M WHITE NOT_HISPANIC 41 YEARS TRT01 DRUG_A TRT01 DRUG_A 1982-06-06 2023-05-01 2023-10-01 2023-04-15 INV05 DR_LEE
STUDY001 STUDY001-AUS-010 010 5001 AUSTRALIA F WHITE NOT_HISPANIC 36 YEARS TRT02 DRUG_B TRT02 DRUG_B 1987-02-19 2023-05-03 2023-10-05 2023-04-17 INV05 DR_LEE
STUDY001 STUDY001-CAN-011 011 6001 CANADA M WHITE NOT_HISPANIC 49 YEARS TRT01 DRUG_A TRT01 DRUG_A 1974-10-30 2023-06-01 2023-11-01 2023-05-20 INV06 DR_GREEN
STUDY001 STUDY001-CAN-012 012 6001 CANADA F WHITE NOT_HISPANIC 44 YEARS TRT02 DRUG_B TRT02 DRUG_B 1979-04-05 2023-06-05 2023-11-05 2023-05-22 INV06 DR_GREEN
;
run;
proc print data=sdtm_dm;
run;
| Obs | STUDYID | DOMAIN | USUBJID | SUBJID | SITEID | COUNTRY | SEX | RACE | ETHNIC | AGE | AGEU | ARMCD | ARM | INVID | INVNAM | BRTHDTC | RFSTDTC | RFENDTC | DMDTC |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | STUDY001 | DM | STUDY001-IND-001 | 001 | 1001 | INDIA | M | ASIAN | NOT_HISPANIC | 34 | YEARS | TRT01 | DRUG_A | INV01 | DR_RAO | 1990-05-10 | 2023-01-10 | 2023-06-10 | 2023-01-05 |
| 2 | STUDY001 | DM | STUDY001-IND-002 | 002 | 1001 | INDIA | F | ASIAN | NOT_HISPANIC | 29 | YEARS | TRT02 | DRUG_B | INV01 | DR_RAO | 1995-08-21 | 2023-01-12 | 2023-06-15 | 2023-01-07 |
| 3 | STUDY001 | DM | STUDY001-USA-003 | 003 | 2001 | USA | M | WHITE | NOT_HISPANIC | 45 | YEARS | TRT01 | DRUG_A | INV02 | DR_SMITH | 1978-03-14 | 2023-02-01 | 2023-07-01 | 2023-01-25 |
| 4 | STUDY001 | DM | STUDY001-USA-004 | 004 | 2001 | USA | F | BLACK | OR_AFRICAN_AMERICAN_HISPANIC | 38 | YEARS | TRT02 | DRUG_B | INV02 | DR_SMITH | 1986-11-02 | 2023-02-05 | 2023-07-10 | 2023-01-28 |
| 5 | STUDY001 | DM | STUDY001-JPN-005 | 005 | 3001 | JAPAN | M | ASIAN | NOT_HISPANIC | 52 | YEARS | TRT01 | DRUG_A | INV03 | DR_TANAKA | 1971-07-09 | 2023-03-01 | 2023-08-01 | 2023-02-20 |
| 6 | STUDY001 | DM | STUDY001-JPN-006 | 006 | 3001 | JAPAN | F | ASIAN | NOT_HISPANIC | 47 | YEARS | TRT02 | DRUG_B | INV03 | DR_TANAKA | 1976-01-18 | 2023-03-05 | 2023-08-05 | 2023-02-22 |
| 7 | STUDY001 | DM | STUDY001-UK-007 | 007 | 4001 | UK | M | WHITE | NOT_HISPANIC | 60 | YEARS | TRT01 | DRUG_A | INV04 | DR_BROWN | 1963-09-25 | 2023-04-01 | 2023-09-01 | 2023-03-18 |
| 8 | STUDY001 | DM | STUDY001-UK-008 | 008 | 4001 | UK | F | WHITE | NOT_HISPANIC | 55 | YEARS | TRT02 | DRUG_B | INV04 | DR_BROWN | 1968-12-11 | 2023-04-03 | 2023-09-05 | 2023-03-20 |
| 9 | STUDY001 | DM | STUDY001-AUS-009 | 009 | 5001 | AUSTRALIA | M | WHITE | NOT_HISPANIC | 41 | YEARS | TRT01 | DRUG_A | INV05 | DR_LEE | 1982-06-06 | 2023-05-01 | 2023-10-01 | 2023-04-15 |
| 10 | STUDY001 | DM | STUDY001-AUS-010 | 010 | 5001 | AUSTRALIA | F | WHITE | NOT_HISPANIC | 36 | YEARS | TRT02 | DRUG_B | INV05 | DR_LEE | 1987-02-19 | 2023-05-03 | 2023-10-05 | 2023-04-17 |
| 11 | STUDY001 | DM | STUDY001-CAN-011 | 011 | 6001 | CANADA | M | WHITE | NOT_HISPANIC | 49 | YEARS | TRT01 | DRUG_A | INV06 | DR_GREEN | 1974-10-30 | 2023-06-01 | 2023-11-01 | 2023-05-20 |
| 12 | STUDY001 | DM | STUDY001-CAN-012 | 012 | 6001 | CANADA | F | WHITE | NOT_HISPANIC | 44 | YEARS | TRT02 | DRUG_B | INV06 | DR_GREEN | 1979-04-05 | 2023-06-05 | 2023-11-05 | 2023-05-22 |
HOW TO PRACTICE WITH THIS DATASET
A. BASIC CHECKS
proc contents data=sdtm_dm;
run;
OUTPUT:
The CONTENTS Procedure
| Data Set Name | WORK.SDTM_DM | Observations | 12 |
|---|---|---|---|
| Member Type | DATA | Variables | 19 |
| Engine | V9 | Indexes | 0 |
| Created | 12/16/2025 07:10:23 | Observation Length | 248 |
| Last Modified | 12/16/2025 07:10:23 | Deleted Observations | 0 |
| Protection | Compressed | NO | |
| Data Set Type | Sorted | NO | |
| Label | |||
| Data Representation | SOLARIS_X86_64, LINUX_X86_64, ALPHA_TRU64, LINUX_IA64 | ||
| Encoding | utf-8 Unicode (UTF-8) |
| Engine/Host Dependent Information | |
|---|---|
| Data Set Page Size | 131072 |
| Number of Data Set Pages | 1 |
| First Data Page | 1 |
| Max Obs per Page | 528 |
| Obs in First Data Page | 12 |
| Number of Data Set Repairs | 0 |
| Filename | /saswork/SAS_workB6BB0000902C_odaws01-apse1-2.oda.sas.com/SAS_workF09A0000902C_odaws01-apse1-2.oda.sas.com/sdtm_dm.sas7bdat |
| Release Created | 9.0401M8 |
| Host Created | Linux |
| Inode Number | 1214119 |
| Access Permission | rw-r--r-- |
| Owner Name | u63247146 |
| File Size | 256KB |
| File Size (bytes) | 262144 |
| Alphabetic List of Variables and Attributes | |||
|---|---|---|---|
| # | Variable | Type | Len |
| 10 | AGE | Num | 8 |
| 11 | AGEU | Char | 10 |
| 13 | ARM | Char | 20 |
| 12 | ARMCD | Char | 8 |
| 16 | BRTHDTC | Char | 10 |
| 6 | COUNTRY | Char | 15 |
| 19 | DMDTC | Char | 10 |
| 2 | DOMAIN | Char | 2 |
| 9 | ETHNIC | Char | 30 |
| 14 | INVID | Char | 10 |
| 15 | INVNAM | Char | 30 |
| 8 | RACE | Char | 20 |
| 18 | RFENDTC | Char | 10 |
| 17 | RFSTDTC | Char | 10 |
| 7 | SEX | Char | 1 |
| 5 | SITEID | Char | 5 |
| 1 | STUDYID | Char | 12 |
| 4 | SUBJID | Char | 10 |
| 3 | USUBJID | Char | 25 |
proc print data=sdtm_dm(obs=5);
run;
OUTPUT:
| Obs | STUDYID | DOMAIN | USUBJID | SUBJID | SITEID | COUNTRY | SEX | RACE | ETHNIC | AGE | AGEU | ARMCD | ARM | INVID | INVNAM | BRTHDTC | RFSTDTC | RFENDTC | DMDTC |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | STUDY001 | DM | STUDY001-IND-001 | 001 | 1001 | INDIA | M | ASIAN | NOT_HISPANIC | 34 | YEARS | TRT01 | DRUG_A | INV01 | DR_RAO | 1990-05-10 | 2023-01-10 | 2023-06-10 | 2023-01-05 |
| 2 | STUDY001 | DM | STUDY001-IND-002 | 002 | 1001 | INDIA | F | ASIAN | NOT_HISPANIC | 29 | YEARS | TRT02 | DRUG_B | INV01 | DR_RAO | 1995-08-21 | 2023-01-12 | 2023-06-15 | 2023-01-07 |
| 3 | STUDY001 | DM | STUDY001-USA-003 | 003 | 2001 | USA | M | WHITE | NOT_HISPANIC | 45 | YEARS | TRT01 | DRUG_A | INV02 | DR_SMITH | 1978-03-14 | 2023-02-01 | 2023-07-01 | 2023-01-25 |
| 4 | STUDY001 | DM | STUDY001-USA-004 | 004 | 2001 | USA | F | BLACK | OR_AFRICAN_AMERICAN_HISPANIC | 38 | YEARS | TRT02 | DRUG_B | INV02 | DR_SMITH | 1986-11-02 | 2023-02-05 | 2023-07-10 | 2023-01-28 |
| 5 | STUDY001 | DM | STUDY001-JPN-005 | 005 | 3001 | JAPAN | M | ASIAN | NOT_HISPANIC | 52 | YEARS | TRT01 | DRUG_A | INV03 | DR_TANAKA | 1971-07-09 | 2023-03-01 | 2023-08-01 | 2023-02-20 |
B. SUBJECT COUNT BY SEX
proc freq data=sdtm_dm;
tables SEX;
run;
OUTPUT:
The FREQ Procedure
| SEX | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| F | 6 | 50.00 | 6 | 50.00 |
| M | 6 | 50.00 | 12 | 100.00 |
C. AGE SUMMARY
proc means data=sdtm_dm min max mean;
var AGE;
run;
OUTPUT:
The MEANS Procedure
| Analysis Variable : AGE | ||
|---|---|---|
| Minimum | Maximum | Mean |
| 29.0000000 | 60.0000000 | 44.1666667 |
D. COUNTRY-WISE SUBJECT DISTRIBUTION
proc freq data=sdtm_dm;
tables COUNTRY;
run;
OUTPUT:
The FREQ Procedure
| COUNTRY | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| AUSTRALIA | 2 | 16.67 | 2 | 16.67 |
| CANADA | 2 | 16.67 | 4 | 33.33 |
| INDIA | 2 | 16.67 | 6 | 50.00 |
| JAPAN | 2 | 16.67 | 8 | 66.67 |
| UK | 2 | 16.67 | 10 | 83.33 |
| USA | 2 | 16.67 | 12 | 100.00 |
E. CHECK ONE RECORD PER SUBJECT
proc sort data=sdtm_dm out=dm_sorted;
by USUBJID;
run;
proc print data=dm_sorted;
run;
OUTPUT:
| Obs | STUDYID | DOMAIN | USUBJID | SUBJID | SITEID | COUNTRY | SEX | RACE | ETHNIC | AGE | AGEU | ARMCD | ARM | INVID | INVNAM | BRTHDTC | RFSTDTC | RFENDTC | DMDTC |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | STUDY001 | DM | STUDY001-AUS-009 | 009 | 5001 | AUSTRALIA | M | WHITE | NOT_HISPANIC | 41 | YEARS | TRT01 | DRUG_A | INV05 | DR_LEE | 1982-06-06 | 2023-05-01 | 2023-10-01 | 2023-04-15 |
| 2 | STUDY001 | DM | STUDY001-AUS-010 | 010 | 5001 | AUSTRALIA | F | WHITE | NOT_HISPANIC | 36 | YEARS | TRT02 | DRUG_B | INV05 | DR_LEE | 1987-02-19 | 2023-05-03 | 2023-10-05 | 2023-04-17 |
| 3 | STUDY001 | DM | STUDY001-CAN-011 | 011 | 6001 | CANADA | M | WHITE | NOT_HISPANIC | 49 | YEARS | TRT01 | DRUG_A | INV06 | DR_GREEN | 1974-10-30 | 2023-06-01 | 2023-11-01 | 2023-05-20 |
| 4 | STUDY001 | DM | STUDY001-CAN-012 | 012 | 6001 | CANADA | F | WHITE | NOT_HISPANIC | 44 | YEARS | TRT02 | DRUG_B | INV06 | DR_GREEN | 1979-04-05 | 2023-06-05 | 2023-11-05 | 2023-05-22 |
| 5 | STUDY001 | DM | STUDY001-IND-001 | 001 | 1001 | INDIA | M | ASIAN | NOT_HISPANIC | 34 | YEARS | TRT01 | DRUG_A | INV01 | DR_RAO | 1990-05-10 | 2023-01-10 | 2023-06-10 | 2023-01-05 |
| 6 | STUDY001 | DM | STUDY001-IND-002 | 002 | 1001 | INDIA | F | ASIAN | NOT_HISPANIC | 29 | YEARS | TRT02 | DRUG_B | INV01 | DR_RAO | 1995-08-21 | 2023-01-12 | 2023-06-15 | 2023-01-07 |
| 7 | STUDY001 | DM | STUDY001-JPN-005 | 005 | 3001 | JAPAN | M | ASIAN | NOT_HISPANIC | 52 | YEARS | TRT01 | DRUG_A | INV03 | DR_TANAKA | 1971-07-09 | 2023-03-01 | 2023-08-01 | 2023-02-20 |
| 8 | STUDY001 | DM | STUDY001-JPN-006 | 006 | 3001 | JAPAN | F | ASIAN | NOT_HISPANIC | 47 | YEARS | TRT02 | DRUG_B | INV03 | DR_TANAKA | 1976-01-18 | 2023-03-05 | 2023-08-05 | 2023-02-22 |
| 9 | STUDY001 | DM | STUDY001-UK-007 | 007 | 4001 | UK | M | WHITE | NOT_HISPANIC | 60 | YEARS | TRT01 | DRUG_A | INV04 | DR_BROWN | 1963-09-25 | 2023-04-01 | 2023-09-01 | 2023-03-18 |
| 10 | STUDY001 | DM | STUDY001-UK-008 | 008 | 4001 | UK | F | WHITE | NOT_HISPANIC | 55 | YEARS | TRT02 | DRUG_B | INV04 | DR_BROWN | 1968-12-11 | 2023-04-03 | 2023-09-05 | 2023-03-20 |
| 11 | STUDY001 | DM | STUDY001-USA-003 | 003 | 2001 | USA | M | WHITE | NOT_HISPANIC | 45 | YEARS | TRT01 | DRUG_A | INV02 | DR_SMITH | 1978-03-14 | 2023-02-01 | 2023-07-01 | 2023-01-25 |
| 12 | STUDY001 | DM | STUDY001-USA-004 | 004 | 2001 | USA | F | BLACK | OR_AFRICAN_AMERICAN_HISPANIC | 38 | YEARS | TRT02 | DRUG_B | INV02 | DR_SMITH | 1986-11-02 | 2023-02-05 | 2023-07-10 | 2023-01-28 |
data dm_dup;
set dm_sorted;
by USUBJID;
if not (first.USUBJID and last.USUBJID);
run;
proc print data=dm_dup;
title "DUPLICATE USUBJID CHECK";
run;
LOG:
NOTE: No observations in data set WORK.DM_DUP.
F. CHECK MISSING CRITICAL VARIABLES
proc means data=sdtm_dm n nmiss;
var AGE;
run;
OUTPUT:
The MEANS Procedure
| Analysis Variable : AGE | |
|---|---|
| N | N Miss |
| 12 | 0 |
proc freq data=sdtm_dm;
tables SEX RACE ETHNIC COUNTRY / missing;
run;
OUTPUT:
The FREQ Procedure
| SEX | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| F | 6 | 50.00 | 6 | 50.00 |
| M | 6 | 50.00 | 12 | 100.00 |
| RACE | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| ASIAN | 4 | 33.33 | 4 | 33.33 |
| BLACK | 1 | 8.33 | 5 | 41.67 |
| WHITE | 7 | 58.33 | 12 | 100.00 |
| ETHNIC | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| NOT_HISPANIC | 11 | 91.67 | 11 | 91.67 |
| OR_AFRICAN_AMERICAN_HISPANIC | 1 | 8.33 | 12 | 100.00 |
| COUNTRY | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| AUSTRALIA | 2 | 16.67 | 2 | 16.67 |
| CANADA | 2 | 16.67 | 4 | 33.33 |
| INDIA | 2 | 16.67 | 6 | 50.00 |
| JAPAN | 2 | 16.67 | 8 | 66.67 |
| UK | 2 | 16.67 | 10 | 83.33 |
| USA | 2 | 16.67 | 12 | 100.00 |
G. VALIDATE AGE CALCULATION USING BIRTH DATE
data dm_age_check;
set sdtm_dm;
/* Convert ISO 8601 character dates to numeric SAS dates */
if not missing(BRTHDTC) then
BRTHDTN = input(BRTHDTC, yymmdd10.);
if not missing(RFSTDTC) then
RFSTDTN = input(RFSTDTC, yymmdd10.);
/* Calculate age only when both dates are valid */
if not missing(BRTHDTN) and not missing(RFSTDTN) then
AGE_CALC = intck('year', BRTHDTN, RFSTDTN, 'c');
label AGE_CALC = 'Calculated Age at Reference Start Date';
run;
proc print data=dm_age_check;
var USUBJID AGE AGE_CALC BRTHDTC RFSTDTC;
run;
OUTPUT:
| Obs | USUBJID | AGE | AGE_CALC | BRTHDTC | RFSTDTC |
|---|---|---|---|---|---|
| 1 | STUDY001-IND-001 | 34 | 32 | 1990-05-10 | 2023-01-10 |
| 2 | STUDY001-IND-002 | 29 | 27 | 1995-08-21 | 2023-01-12 |
| 3 | STUDY001-USA-003 | 45 | 44 | 1978-03-14 | 2023-02-01 |
| 4 | STUDY001-USA-004 | 38 | 36 | 1986-11-02 | 2023-02-05 |
| 5 | STUDY001-JPN-005 | 52 | 51 | 1971-07-09 | 2023-03-01 |
| 6 | STUDY001-JPN-006 | 47 | 47 | 1976-01-18 | 2023-03-05 |
| 7 | STUDY001-UK-007 | 60 | 59 | 1963-09-25 | 2023-04-01 |
| 8 | STUDY001-UK-008 | 55 | 54 | 1968-12-11 | 2023-04-03 |
| 9 | STUDY001-AUS-009 | 41 | 40 | 1982-06-06 | 2023-05-01 |
| 10 | STUDY001-AUS-010 | 36 | 36 | 1987-02-19 | 2023-05-03 |
| 11 | STUDY001-CAN-011 | 49 | 48 | 1974-10-30 | 2023-06-01 |
| 12 | STUDY001-CAN-012 | 44 | 44 | 1979-04-05 | 2023-06-05 |
H. CHECK DATE ORDER CONSISTENCY
data dm_date_check;
set sdtm_dm;
if RFSTDTC > RFENDTC then FLAG_DATE = "ERROR";
run;
proc print data=dm_date_check;
where FLAG_DATE = "ERROR";
var USUBJID RFSTDTC RFENDTC;
run;
LOG:
NOTE: No observations were selected from data set WORK.DM_DATE_CHECK.
I. COUNTRY AND SITE CROSS-CHECK
proc freq data=sdtm_dm;
tables COUNTRY*SITEID / nocol norow;
run;
OUTPUT:
The FREQ Procedure
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
J. SEX VS RACE DISTRIBUTION (QA CHECK)
proc freq data=sdtm_dm;
tables SEX*RACE / missing;
run;
OUTPUT:
The FREQ Procedure
|
| ||||||||||||||||||||||||||||||
K. POPULATION COUNTS BY ARM
proc freq data=sdtm_dm;
tables ARMCD;
run;
OUTPUT:
The FREQ Procedure
| ARMCD | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| TRT01 | 6 | 50.00 | 6 | 50.00 |
| TRT02 | 6 | 50.00 | 12 | 100.00 |
L. MIN / MAX STUDY DATES
proc sql;
select
min(input(RFSTDTC, yymmdd10.)) as Min_RFSTD format=date9.,
max(input(RFSTDTC, yymmdd10.)) as Max_RFSTD format=date9.,
min(input(RFENDTC, yymmdd10.)) as Min_RFEND format=date9.,
max(input(RFENDTC, yymmdd10.)) as Max_RFEND format=date9.
from sdtm_dm;
quit;
OUTPUT:
| Min_RFSTD | Max_RFSTD | Min_RFEND | Max_RFEND |
|---|---|---|---|
| 10JAN2023 | 05JUN2023 | 10JUN2023 | 05NOV2023 |
M. CREATE A DERIVED AGE GROUP (PRACTICE STEP)
data dm_agegrp;
set sdtm_dm;
length AGEGRP $10;
if AGE < 30 then AGEGRP = "<30";
else if 30 <= AGE < 50 then AGEGRP = "30-49";
else if AGE >= 50 then AGEGRP = "50+";
run;
Proc print data=dm_agegrp;
run;
OUTPUT:
| Obs | STUDYID | DOMAIN | USUBJID | SUBJID | SITEID | COUNTRY | SEX | RACE | ETHNIC | AGE | AGEU | ARMCD | ARM | INVID | INVNAM | BRTHDTC | RFSTDTC | RFENDTC | DMDTC | AGEGRP |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | STUDY001 | DM | STUDY001-IND-001 | 001 | 1001 | INDIA | M | ASIAN | NOT_HISPANIC | 34 | YEARS | TRT01 | DRUG_A | INV01 | DR_RAO | 1990-05-10 | 2023-01-10 | 2023-06-10 | 2023-01-05 | 30-49 |
| 2 | STUDY001 | DM | STUDY001-IND-002 | 002 | 1001 | INDIA | F | ASIAN | NOT_HISPANIC | 29 | YEARS | TRT02 | DRUG_B | INV01 | DR_RAO | 1995-08-21 | 2023-01-12 | 2023-06-15 | 2023-01-07 | <30 |
| 3 | STUDY001 | DM | STUDY001-USA-003 | 003 | 2001 | USA | M | WHITE | NOT_HISPANIC | 45 | YEARS | TRT01 | DRUG_A | INV02 | DR_SMITH | 1978-03-14 | 2023-02-01 | 2023-07-01 | 2023-01-25 | 30-49 |
| 4 | STUDY001 | DM | STUDY001-USA-004 | 004 | 2001 | USA | F | BLACK | OR_AFRICAN_AMERICAN_HISPANIC | 38 | YEARS | TRT02 | DRUG_B | INV02 | DR_SMITH | 1986-11-02 | 2023-02-05 | 2023-07-10 | 2023-01-28 | 30-49 |
| 5 | STUDY001 | DM | STUDY001-JPN-005 | 005 | 3001 | JAPAN | M | ASIAN | NOT_HISPANIC | 52 | YEARS | TRT01 | DRUG_A | INV03 | DR_TANAKA | 1971-07-09 | 2023-03-01 | 2023-08-01 | 2023-02-20 | 50+ |
| 6 | STUDY001 | DM | STUDY001-JPN-006 | 006 | 3001 | JAPAN | F | ASIAN | NOT_HISPANIC | 47 | YEARS | TRT02 | DRUG_B | INV03 | DR_TANAKA | 1976-01-18 | 2023-03-05 | 2023-08-05 | 2023-02-22 | 30-49 |
| 7 | STUDY001 | DM | STUDY001-UK-007 | 007 | 4001 | UK | M | WHITE | NOT_HISPANIC | 60 | YEARS | TRT01 | DRUG_A | INV04 | DR_BROWN | 1963-09-25 | 2023-04-01 | 2023-09-01 | 2023-03-18 | 50+ |
| 8 | STUDY001 | DM | STUDY001-UK-008 | 008 | 4001 | UK | F | WHITE | NOT_HISPANIC | 55 | YEARS | TRT02 | DRUG_B | INV04 | DR_BROWN | 1968-12-11 | 2023-04-03 | 2023-09-05 | 2023-03-20 | 50+ |
| 9 | STUDY001 | DM | STUDY001-AUS-009 | 009 | 5001 | AUSTRALIA | M | WHITE | NOT_HISPANIC | 41 | YEARS | TRT01 | DRUG_A | INV05 | DR_LEE | 1982-06-06 | 2023-05-01 | 2023-10-01 | 2023-04-15 | 30-49 |
| 10 | STUDY001 | DM | STUDY001-AUS-010 | 010 | 5001 | AUSTRALIA | F | WHITE | NOT_HISPANIC | 36 | YEARS | TRT02 | DRUG_B | INV05 | DR_LEE | 1987-02-19 | 2023-05-03 | 2023-10-05 | 2023-04-17 | 30-49 |
| 11 | STUDY001 | DM | STUDY001-CAN-011 | 011 | 6001 | CANADA | M | WHITE | NOT_HISPANIC | 49 | YEARS | TRT01 | DRUG_A | INV06 | DR_GREEN | 1974-10-30 | 2023-06-01 | 2023-11-01 | 2023-05-20 | 30-49 |
| 12 | STUDY001 | DM | STUDY001-CAN-012 | 012 | 6001 | CANADA | F | WHITE | NOT_HISPANIC | 44 | YEARS | TRT02 | DRUG_B | INV06 | DR_GREEN | 1979-04-05 | 2023-06-05 | 2023-11-05 | 2023-05-22 | 30-49 |
proc freq data=dm_agegrp;
tables AGEGRP;
run;
OUTPUT:
The FREQ Procedure
| AGEGRP | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
|---|---|---|---|---|
| 30-49 | 8 | 66.67 | 8 | 66.67 |
| 50+ | 3 | 25.00 | 11 | 91.67 |
| <30 | 1 | 8.33 | 12 | 100.00 |
N. CHECK DEATH FLAG LOGIC
data dm_death_check;
set sdtm_dm;
if DTHFL = "Y" and DTHDTC = . then FLAG = "MISSING DTHDTC";
run;
proc print data=dm_death_check;
where FLAG ne "";
run;
LOG:
O. SORTING DM AS PER SDTM RULE
proc sort data=sdtm_dm;
by STUDYID USUBJID;
run;
Proc print data=sdtm_dm;
run;
OUTPUT:
| Obs | STUDYID | DOMAIN | USUBJID | SUBJID | SITEID | COUNTRY | SEX | RACE | ETHNIC | AGE | AGEU | ARMCD | ARM | INVID | INVNAM | BRTHDTC | RFSTDTC | RFENDTC | DMDTC |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | STUDY001 | DM | STUDY001-AUS-009 | 009 | 5001 | AUSTRALIA | M | WHITE | NOT_HISPANIC | 41 | YEARS | TRT01 | DRUG_A | INV05 | DR_LEE | 1982-06-06 | 2023-05-01 | 2023-10-01 | 2023-04-15 |
| 2 | STUDY001 | DM | STUDY001-AUS-010 | 010 | 5001 | AUSTRALIA | F | WHITE | NOT_HISPANIC | 36 | YEARS | TRT02 | DRUG_B | INV05 | DR_LEE | 1987-02-19 | 2023-05-03 | 2023-10-05 | 2023-04-17 |
| 3 | STUDY001 | DM | STUDY001-CAN-011 | 011 | 6001 | CANADA | M | WHITE | NOT_HISPANIC | 49 | YEARS | TRT01 | DRUG_A | INV06 | DR_GREEN | 1974-10-30 | 2023-06-01 | 2023-11-01 | 2023-05-20 |
| 4 | STUDY001 | DM | STUDY001-CAN-012 | 012 | 6001 | CANADA | F | WHITE | NOT_HISPANIC | 44 | YEARS | TRT02 | DRUG_B | INV06 | DR_GREEN | 1979-04-05 | 2023-06-05 | 2023-11-05 | 2023-05-22 |
| 5 | STUDY001 | DM | STUDY001-IND-001 | 001 | 1001 | INDIA | M | ASIAN | NOT_HISPANIC | 34 | YEARS | TRT01 | DRUG_A | INV01 | DR_RAO | 1990-05-10 | 2023-01-10 | 2023-06-10 | 2023-01-05 |
| 6 | STUDY001 | DM | STUDY001-IND-002 | 002 | 1001 | INDIA | F | ASIAN | NOT_HISPANIC | 29 | YEARS | TRT02 | DRUG_B | INV01 | DR_RAO | 1995-08-21 | 2023-01-12 | 2023-06-15 | 2023-01-07 |
| 7 | STUDY001 | DM | STUDY001-JPN-005 | 005 | 3001 | JAPAN | M | ASIAN | NOT_HISPANIC | 52 | YEARS | TRT01 | DRUG_A | INV03 | DR_TANAKA | 1971-07-09 | 2023-03-01 | 2023-08-01 | 2023-02-20 |
| 8 | STUDY001 | DM | STUDY001-JPN-006 | 006 | 3001 | JAPAN | F | ASIAN | NOT_HISPANIC | 47 | YEARS | TRT02 | DRUG_B | INV03 | DR_TANAKA | 1976-01-18 | 2023-03-05 | 2023-08-05 | 2023-02-22 |
| 9 | STUDY001 | DM | STUDY001-UK-007 | 007 | 4001 | UK | M | WHITE | NOT_HISPANIC | 60 | YEARS | TRT01 | DRUG_A | INV04 | DR_BROWN | 1963-09-25 | 2023-04-01 | 2023-09-01 | 2023-03-18 |
| 10 | STUDY001 | DM | STUDY001-UK-008 | 008 | 4001 | UK | F | WHITE | NOT_HISPANIC | 55 | YEARS | TRT02 | DRUG_B | INV04 | DR_BROWN | 1968-12-11 | 2023-04-03 | 2023-09-05 | 2023-03-20 |
| 11 | STUDY001 | DM | STUDY001-USA-003 | 003 | 2001 | USA | M | WHITE | NOT_HISPANIC | 45 | YEARS | TRT01 | DRUG_A | INV02 | DR_SMITH | 1978-03-14 | 2023-02-01 | 2023-07-01 | 2023-01-25 |
| 12 | STUDY001 | DM | STUDY001-USA-004 | 004 | 2001 | USA | F | BLACK | OR_AFRICAN_AMERICAN_HISPANIC | 38 | YEARS | TRT02 | DRUG_B | INV02 | DR_SMITH | 1986-11-02 | 2023-02-05 | 2023-07-10 | 2023-01-28 |
P. QUICK DM QUALITY CONTROL SUMMARY
proc sql;
select
count(distinct USUBJID) as TOTAL_SUBJECTS,
min(AGE) as MIN_AGE,
max(AGE) as MAX_AGE
from sdtm_dm;
quit;
OUTPUT:
| TOTAL_SUBJECTS | MIN_AGE | MAX_AGE |
|---|---|---|
| 12 | 29 | 60 |
Q. PRINT DM IN REVIEW-FRIENDLY FORMAT
proc print data=sdtm_dm_full label noobs;
var STUDYID USUBJID SEX AGE AGEU RACE ETHNIC COUNTRY ARM;
run;
OUTPUT:
| STUDYID | USUBJID | SEX | AGE | AGEU | RACE | ETHNIC | COUNTRY | ARM |
|---|---|---|---|---|---|---|---|---|
| STUDY001 | STUDY001-AUS-009 | M | 41 | YEARS | WHITE | NOT_HISPANIC | AUSTRALIA | DRUG_A |
| STUDY001 | STUDY001-AUS-010 | F | 36 | YEARS | WHITE | NOT_HISPANIC | AUSTRALIA | DRUG_B |
| STUDY001 | STUDY001-CAN-011 | M | 49 | YEARS | WHITE | NOT_HISPANIC | CANADA | DRUG_A |
| STUDY001 | STUDY001-CAN-012 | F | 44 | YEARS | WHITE | NOT_HISPANIC | CANADA | DRUG_B |
| STUDY001 | STUDY001-IND-001 | M | 34 | YEARS | ASIAN | NOT_HISPANIC | INDIA | DRUG_A |
| STUDY001 | STUDY001-IND-002 | F | 29 | YEARS | ASIAN | NOT_HISPANIC | INDIA | DRUG_B |
| STUDY001 | STUDY001-JPN-005 | M | 52 | YEARS | ASIAN | NOT_HISPANIC | JAPAN | DRUG_A |
| STUDY001 | STUDY001-JPN-006 | F | 47 | YEARS | ASIAN | NOT_HISPANIC | JAPAN | DRUG_B |
| STUDY001 | STUDY001-UK-007 | M | 60 | YEARS | WHITE | NOT_HISPANIC | UK | DRUG_A |
| STUDY001 | STUDY001-UK-008 | F | 55 | YEARS | WHITE | NOT_HISPANIC | UK | DRUG_B |
| STUDY001 | STUDY001-USA-003 | M | 45 | YEARS | WHITE | NOT_HISPANIC | USA | DRUG_A |
| STUDY001 | STUDY001-USA-004 | F | 38 | YEARS | BLACK | OR_AFRICAN_AMERICAN_HISPANIC | USA | DRUG_B |
/*USED TO CHECK SDTM REQUIRED PARAMETERS ARE CONTAINED OR NOT*/
proc cdisc model=sdtm;
sdtm sdtmversion="3.1";
domaindata data=work.sdtm_dm
domain=dm
category=special;
run;
LOG:
NOTE: DomainData DM data content is valid.
No comments:
Post a Comment