Hi all, I am attempting to create new variables from a dataset containing TimeLine Follow Back (TLFB) data. The data is in wide form and looks like this: data WORK.FIELD2;
infile datalines dsd truncover;
input Study_ID:BEST12. Sex:BEST12. FU_Day_1:BEST12. FU_Day_1_time:BEST12. FU_Day_2:BEST12. FU_Day_2_time:BEST12. FU_Day_3:BEST12. FU_Day_3_time:BEST12. FU_Day_4:BEST12. FU_Day_4_time:BEST12. FU_Day_5:BEST12. FU_Day_5_time:BEST12. FU_Day_6:BEST12. FU_Day_6_
time:BEST12. FU_Day_7:BEST12. FU_Day_7_time:BEST12. FU_Day_8:BEST12. FU_Day_8_time:BEST12. FU_Day_9:BEST12. FU_Day_9_time:BEST12. FU_Day_10:BEST12. FU_Day_10_time:BEST12. FU_Day_11:BEST12. FU_Day_11_time:BEST12. FU_Day_12:BEST12. FU_Day_12_time:BEST12. FU_
Day_13:BEST12. FU_Day_13_time:BEST12. FU_Day_14:BEST12. FU_Day_14_time:BEST12. FU_Day_15:BEST12. FU_Day_15_time:BEST12. FU_Day_16:BEST12. FU_Day_16_time:BEST12. FU_Day_17:BEST12. FU_Day_17_time:BEST12. FU_Day_18:BEST12. FU_Day_18_time:BEST12. FU_Day_19:BES
T12. FU_Day_19_time:BEST12. FU_Day_20:BEST12. FU_Day_20_time:BEST12. FU_Day_21:BEST12. FU_Day_21_time:BEST12. FU_Day_22:BEST12. FU_Day_22_time:BEST12. FU_Day_23:BEST12. FU_Day_23_time:BEST12. FU_Day_24:BEST12. FU_Day_24_time:BEST12. FU_Day_25:BEST12. FU_Da
y_25_time:BEST12. FU_Day_26:BEST12. FU_Day_26_time:BEST12. FU_Day_27:BEST12. FU_Day_27_time:BEST12. FU_Day_28:BEST12. FU_Day_28_time:BEST12. FU_Day_29:BEST12. FU_Day_29_time:BEST12. FU_Day_30:BEST12. FU_Day_30_time:BEST12.;
format Study_ID BEST12. Sex BEST12. FU_Day_1 BEST12. FU_Day_1_time BEST12. FU_Day_2 BEST12. FU_Day_2_time BEST12. FU_Day_3 BEST12. FU_Day_3_time BEST12. FU_Day_4 BEST12. FU_Day_4_time BEST12. FU_Day_5 BEST12. FU_Day_5_time BEST12. FU_Day_6 BEST12. FU_Day_6
_time BEST12. FU_Day_7 BEST12. FU_Day_7_time BEST12. FU_Day_8 BEST12. FU_Day_8_time BEST12. FU_Day_9 BEST12. FU_Day_9_time BEST12. FU_Day_10 BEST12. FU_Day_10_time BEST12. FU_Day_11 BEST12. FU_Day_11_time BEST12. FU_Day_12 BEST12. FU_Day_12_time BEST12. FU
_Day_13 BEST12. FU_Day_13_time BEST12. FU_Day_14 BEST12. FU_Day_14_time BEST12. FU_Day_15 BEST12. FU_Day_15_time BEST12. FU_Day_16 BEST12. FU_Day_16_time BEST12. FU_Day_17 BEST12. FU_Day_17_time BEST12. FU_Day_18 BEST12. FU_Day_18_time BEST12. FU_Day_19 BE
ST12. FU_Day_19_time BEST12. FU_Day_20 BEST12. FU_Day_20_time BEST12. FU_Day_21 BEST12. FU_Day_21_time BEST12. FU_Day_22 BEST12. FU_Day_22_time BEST12. FU_Day_23 BEST12. FU_Day_23_time BEST12. FU_Day_24 BEST12. FU_Day_24_time BEST12. FU_Day_25 BEST12. FU_D
ay_25_time BEST12. FU_Day_26 BEST12. FU_Day_26_time BEST12. FU_Day_27 BEST12. FU_Day_27_time BEST12. FU_Day_28 BEST12. FU_Day_28_time BEST12. FU_Day_29 BEST12. FU_Day_29_time BEST12. FU_Day_30 BEST12. FU_Day_30_time BEST12.;
datalines;
1 0 0 0 0 0 0 0 2 2 2 2 8 10 9 12 3 3 5 3 8 6 0 0 0 0 2 3 0 0 0 0 2 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 0 2 3 2 3 0 0 12 13.5 12 13.5 12 13.5 12 13.5 2 4 0 0 1 2 7 4 2 3.5 0 0 0 0 0 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 0 5 3 0 0 0 0 2 0.5 4 2 3 2 0 0 4 2 0 0 3 4 2 1 0 0 0 0 0 0 3 2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 5 0 0 0 0 2 1 0 0 2 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 1 0 0 3 5 3 5 7 6 0 0 0 0 0 0 0 0 2 2 0 0 3 1.5 0 0 0 0 2 2 2 2 2 1 0 0 2 3 5 3.5 . . . . . . . . . . . . . . . . . . . . . .
6 0 0 0 0 0 0 0 0 0 3 1 3 3 3 3 0 0 3 1.5 0 0 0 0 3 2 3 2.5 4 4 0 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 1 1 0.5 18 4 3 2 0 0 4 3 0 0 2 1 0 0 2 2 0 0 0 0 2 1 0 0 0 0 4 3 2 2 8 3 3 2 0 0 . . . . . . . . . . . . . . . . . . . . . .
8 0 14 7 8 5 0 0 2 2 0 0 0 0 3 2 2 3 0 0 4 3 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 . . . . . . . . . . . . . . . . . . . . . . . .
9 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
;;;; I want to create the following variables on two different timelines. One for the full 30 days (which I have completed) and another for each participant's most recent complete 14 days. Mean Drinks per week ((total number of drinks/14) x 7) Frequency of any drinking days Mean Drinks per drinking day (total number of drinks/frequency of any drinking days) Mean Estimated blood alcohol content (an eBAC will have to be completed for each drinking day and then take the mean of all of these) Peak estimated blood alcohol content (the highest eBAC in a day during each time period) Peak drinking day (the highest number of drinks each participant had during each time period) Frequency of heavy drinking days (5 or more for drinks in a day for men, 4 or more for drinks in a day for women) Extreme heavy drinking days (10 or more drinks in a day for men, 8 or more drinks in a day for women) The data is in wide format obviously but you can see that each participant has varying amounts of data (look at the difference between 2 and 4 for instance). I calculated a lot of the 30-day variables using arrays, but was wondering if there was a way to capture each participant's 14 days. Some will not have a full 14 days while others will have more than 14 usable days. However, I still would like to Before I completely understood the data, I was trying to use the following code. However, I realize that I need to approach the issue differently which brings me to the question of how to find the last 14 days of usable data when it varies for each participant data Steady.Master;
set Steady.Master;
IPS_14Day_Drink= sum(of IPS_day_17 - IPS_day_30);
FU_14Day_Drink= sum(FU_day_17, FU_day_18, FU_day_19, FU_day_20, FU_day_21, FU_day_22, FU_day_23,
FU_day_24, FU_day_25, FU_day_26, FU_day_27, FU_day_28, FU_day_29, FU_day_30);
run;
/*Counting how many days they drank*/
data STEADy.master(drop=i drop=n9);
set STEADY.Master;
n9=0;
array _n(*) IPS_day_17 - IPS_day_30;
do i=1 to dim(_n);
if _n(i) ge 1 then n9+1;
end;
IPS_14Day_Drink_Count=n9;
run;
data STEADy.master(drop=i drop=n9);
set STEADY.Master;
n9=0;
array _n(*) FU_day_17 FU_day_18 FU_day_19 FU_day_20 FU_day_21 FU_day_22 FU_day_23
FU_day_24 FU_day_25 FU_day_26 FU_day_27 FU_day_28 FU_day_29 FU_day_30;
do i=1 to dim(_n);
if _n(i) ge 1 then n9+1;
end;
FU_14Day_Drink_Count=n9;
run;
/*Creating new variables for mean drinks per week ((total drinks/14)*7)*/
data STEADY.master;
set STEADY.master;
IPS_14Day_Mean_Weekly_Drink = ((IPS_14Day_Drink/14)*7);
FU_14Day_Mean_Weekly_Drink = ((FU_14Day_Drink/14)*7);
IPS_14Day_Drinks_Per_Drink_Day = IPS_14Day_Drink/IPS_14Day_Drink_Count;
FU_14Day_Drinks_Per_Drink_Day = FU_14Day_Drink/FU_14Day_Drink_Count;
run; I always appreciate any help with my code or materials to read. I have learned SAS almost entirely from this forum and really hold the regulars here in high regard for spending their time so graciously.
... View more