Hi,
I want to conduct a study where i am looking at BMI at screening, BMI at Operation day, BMI at 6 months post op and BMI at 12 months post-op. I want to see if patients who lost weight pre-op were able to sustain loss after surgery.
Please let me know how should i do that in SAS.
Thanks.
I converted the small spreadsheet to a program using a task I have from SAS Enterprise Guide.
/*This program was generated from WORK.DATA */
DATA WORK.DATA;
attrib Age
length=8
format=BEST12.
informat=BEST12. ;
attrib Sex
length=$1
format=$CHAR1.
informat=$CHAR1. ;
attrib Ethnicity
length=$12
format=$CHAR12.
informat=$CHAR12. ;
attrib Race
length=$24
format=$CHAR24.
informat=$CHAR24. ;
attrib Screening_BMI
length=8
format=BEST12.
informat=BEST12.
label='Screening BMI' ;
attrib PreOpBMI
length=8
format=BEST12.
informat=BEST12. ;
attrib BMI12_mo
length=8
format=BEST12.
informat=BEST12.
label='BMI12 mo' ;
attrib BMI24_mo
length=8
format=BEST12.
informat=BEST12.
label='BMI24 mo' ;
attrib Creatinine_2_wkpost_op
length=8
format=BEST12.
informat=BEST12.
label='Creatinine 2 wkpost-op' ;
attrib EGFR_post_op
length=8
format=BEST12.
informat=BEST12.
label='EGFR post op' ;
INFILE DATALINES DSD;
INPUT
Age
Sex
Ethnicity
Race
Screening_BMI
PreOpBMI
BMI12_mo
BMI24_mo
Creatinine_2_wkpost_op
EGFR_post_op
;
DATALINES4;
60,"M","Non-Hispanic","Caucasian (White)",29.9,29.8,27.8,28.1,1.63,57.35
45,"F","Non-Hispanic","Caucasian (White)",28.8,28.8,,,1.18,58.2
62,"M","Non-Hispanic","Unknown",25.1,25.1,,,1.35,58.47
60,"F","Non-Hispanic","African American (Black)",28.5,28.5,31.9,30.3,1.35,60
65,"F","Non-Hispanic","Other",26.5,26.8,26.9,,0.86,60
66,"F","Non-Hispanic","Asian",31,30.8,30.9,30.7,1.15,60
40,"F","Non-Hispanic","Caucasian (White)",27.8,27.8,28.7,29.7,1.2,48.32
48,"M","Non-Hispanic","Other",28,27.8,,,1.29,51.65
50,"F","Non-Hispanic","Caucasian (White)",30,29.4,28.2,28.8,1.62,35.79
;;;;
RUN;
From your description, it looks like you're just testing for a simple condition.
IF Screening_BMI > 30 THEN
if BMI_12mo < Screening_BMI Then
Sustained_WeightLoss = 1 (true)
data result;
set work.data;
if missing(bmi12_mo) then sustained_wtLoss12 = .;
else if screening_bmi >= 30
and bmi12_mo < screening_bmi
then sustained_wtLoss12 = 1;
else sustained_wtLoss12 = 0;
if missing(bmi24_mo) then sustained_wtLoss24 = .;
else if screening_bmi >= 30
and bmi24_mo < screening_bmi
then sustained_wtLoss24 = 1;
else sustained_wtLoss24 = 0;
run;
Sounds like you would like some guidance about how to design your study...not just the mechanics of running it in SAS, correct?
If you already have sample data that shows what you expect to collect, I think the experts here can provide more help.
If all you are collecting is the measurements for people who have the surgery, then the approach is straightforward. You're just calculating the differences across each measurement. If there are other factors you're tracking that lead to something you're trying to predict, then the approach would be different.
The first thing you need to do is to post an example of your raw SAS data that you already have. After that we can show you ways to extract the information you are looking for. See my footnotes for hints how to post that example data.
Hi,
Please supply SAS data. Once again, see my footnotes.
I converted the small spreadsheet to a program using a task I have from SAS Enterprise Guide.
/*This program was generated from WORK.DATA */
DATA WORK.DATA;
attrib Age
length=8
format=BEST12.
informat=BEST12. ;
attrib Sex
length=$1
format=$CHAR1.
informat=$CHAR1. ;
attrib Ethnicity
length=$12
format=$CHAR12.
informat=$CHAR12. ;
attrib Race
length=$24
format=$CHAR24.
informat=$CHAR24. ;
attrib Screening_BMI
length=8
format=BEST12.
informat=BEST12.
label='Screening BMI' ;
attrib PreOpBMI
length=8
format=BEST12.
informat=BEST12. ;
attrib BMI12_mo
length=8
format=BEST12.
informat=BEST12.
label='BMI12 mo' ;
attrib BMI24_mo
length=8
format=BEST12.
informat=BEST12.
label='BMI24 mo' ;
attrib Creatinine_2_wkpost_op
length=8
format=BEST12.
informat=BEST12.
label='Creatinine 2 wkpost-op' ;
attrib EGFR_post_op
length=8
format=BEST12.
informat=BEST12.
label='EGFR post op' ;
INFILE DATALINES DSD;
INPUT
Age
Sex
Ethnicity
Race
Screening_BMI
PreOpBMI
BMI12_mo
BMI24_mo
Creatinine_2_wkpost_op
EGFR_post_op
;
DATALINES4;
60,"M","Non-Hispanic","Caucasian (White)",29.9,29.8,27.8,28.1,1.63,57.35
45,"F","Non-Hispanic","Caucasian (White)",28.8,28.8,,,1.18,58.2
62,"M","Non-Hispanic","Unknown",25.1,25.1,,,1.35,58.47
60,"F","Non-Hispanic","African American (Black)",28.5,28.5,31.9,30.3,1.35,60
65,"F","Non-Hispanic","Other",26.5,26.8,26.9,,0.86,60
66,"F","Non-Hispanic","Asian",31,30.8,30.9,30.7,1.15,60
40,"F","Non-Hispanic","Caucasian (White)",27.8,27.8,28.7,29.7,1.2,48.32
48,"M","Non-Hispanic","Other",28,27.8,,,1.29,51.65
50,"F","Non-Hispanic","Caucasian (White)",30,29.4,28.2,28.8,1.62,35.79
;;;;
RUN;
From your description, it looks like you're just testing for a simple condition.
IF Screening_BMI > 30 THEN
if BMI_12mo < Screening_BMI Then
Sustained_WeightLoss = 1 (true)
data result;
set work.data;
if missing(bmi12_mo) then sustained_wtLoss12 = .;
else if screening_bmi >= 30
and bmi12_mo < screening_bmi
then sustained_wtLoss12 = 1;
else sustained_wtLoss12 = 0;
if missing(bmi24_mo) then sustained_wtLoss24 = .;
else if screening_bmi >= 30
and bmi24_mo < screening_bmi
then sustained_wtLoss24 = 1;
else sustained_wtLoss24 = 0;
run;
thank you very much. I understand what i need to do now.
Kyra,
It looks like you have missing data in the BMIs. The approach Chris provided is just one way to address missingness and may or may not be appropriate. I'd suggest also reading about the types of missing data and approaches to address it. Perhaps start with D. A. Newman's 2014 article in Organizational Research Methods ( https://www.researchgate.net/publication/268686755_Missing_Data ).
Doc Muhlbaier
Duke
Thanks. I will look into the articles.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.