DM 'CLE LOG; CLE OUT'; ***************************************************************************** * Program name: HP98_KCAL.sas * Data source: 1998 NHIS Prevention Adult * Date: AUGUST 2008 * Purpose: Create physical activity recodes KCAL and PA_LEVEL * Programmer: Division of Health Interview Statistics\NCHS\CDC * Input: C:\NHIS1998.PREVADLT.sas7bdat [1998 Prevention Adult Supplement] * Output: C:\NHIS1998.HP98_KCAL.sas7bdat * Note: All data files and SAS programs referenced below can be * accessed by going to the 'Guide for Data Users' on the * NHIS Physical Activity Information website available via * http://www.cdc.gov/nchs/nhis.htm *******************************************************************************; * PRELIMINARY STEPS: * STEP 1: CREATE: Folder 'c:\nhis1998'on your c drive. * STEP 2: SAVE: PREVADLT.exe in 'c:\nhis1998\' * STEP 3: CLICK: Double click on 'c:\nhis1998\PREVADLT.exe' to extract PREVADLT.dat * STEP 4: COPY: PREVADLT.sas to 'c:\nhis1998\' * STEP 5: RUN: PREVADLT.sas (using PREVADLT.dat) to create dataset PREVADLT.sas7bdat * STEP 6: GO TO: HP98_KCAL.sas (below) ****************************************************************************; options ls=96 ps=54 pageno=1 fmtsearch=(NHIS); LIBNAME NHIS "C:\\NHIS1998"; LIBNAME LIBRARY "C:\\NHIS1998"; %LET YEAR = 1998; %LET YY = %SYSFUNC(SUBSTR( &YEAR, 3, 2)); TITLE1 "NHIS 1998 PHYSICAL ACTIVITY - %sysfunc(today(),MMDDYY.) %sysfunc(time(),time8.)"; ******************************* * Create format for PA_LEVEL * *******************************; PROC FORMAT LIB=LIBRARY; VALUE PA_LEVEL 1 = "KCAL <1.5" 2 = "KCAL 1.5 TO <3.0" 3 = "KCAL 3.0+" 9 = "UNKNOWN"; * KCAL is formatted in the input data file. * Use 'format _all_' to display individual frequencies [1998 only] ; DATA NHIS.HP98_KCAL (DROP=I T M H INTEN1--INTEN69); SET NHIS.PREVADLT; **************************************************** * Create labels for KCAL of each physical activity * ***************************************************; LABEL KCAL = "TOTAL KILOCALORIES PER DAY" WALK_K = "KILOCALORIES WHEN WALKING" YARD_K = "KILOCALORIES WHEN GARDENING" STRT_K = "KILOCALORIES WHEN STRETCHING" LIFT_K = "KILOCALORIES WHEN WEIGHT LIFTING" RUN_K = "KILOCALORIES WHEN JOGGING" AERO_K = "KILOCALORIES WHEN DOING AEROBICS" BIKE_K = "KILOCALORIES WHEN BICYCLE RIDING" STAIR_K = "KILOCALORIES WHEN STAIR CLIMBING" SWIM_K = "KILOCALORIES WHEN SWIMMING" TENNIS_K = "KILOCALORIES WHEN PLAYING TENNIS" GOLF_K = "KILOCALORIES WHEN PLAYING GOLF" BOWL_K = "KILOCALORIES WHEN BOWLING" BASEBL_K = "KILOCALORIES WHEN PLAYING BASEBALL" RACQ_K = "KILOCALORIES WHEN PLAYING HANDBALL" SKI_DH_K = "KILOCALORIES WHEN SKIED DOWNHILL" SKI_CR_K = "KILOCALORIES WHEN SKIED CROSS-COUNTRY" SKI_WA_K = "KILOCALORIES WHEN WATER SKIED" BASKET_K = "KILOCALORIES WHEN PLAYING BASKETBALL" VOLLEY_K = "KILOCALORIES WHEN PLAYING VOLLEYBALL" SOCCER_K = "KILOCALORIES WHEN PLAYING SOCCER" FOOTBL_K = "KILOCALORIES WHEN PLAYING FOOTBALL" OTR_A1_K = "KILOCALORIES PLAYING OTHER SPORT 1" OTR_A2_K = "KILOCALORIES PLAYING OTHER SPORT 2" PA_LEVEL = "PHYSICAL ACTIVITY LEVEL"; ************************************************************; * Assign arrays for do loop calculation *; ************************************************************; ARRAY EXERCISE(23) WALK YARD STRETCH WTLIFT RUN AEROBICS BIKE STAIRS SWIM TENNIS GOLF BOWL BASEBALL RACQUET SKI_DH SKI_CRS SKI_WAT BASKETBL VOLLEYBL SOCCER FOOTBALL OTR_ACT1 OTR_ACT2; ARRAY TIMES(23) WALK_T YARD_T STRT_T LIFT_T RUN_T AERO_T BIKE_T STAIR_T SWIM_T TENNIS_T GOLF_T BOWL_T BASEBL_T RACQ_T SKI_DH_T SKI_CR_T SKI_WA_T BASKET_T VOLLEY_T SOCCER_T FOOTBL_T OTR_A1_T OTR_A2_T ; ARRAY MINUTES(23) WALK_M YARD_M STRT_M LIFT_M RUN_M AERO_M BIKE_M STAIR_M SWIM_M TENNIS_M DUMMY DUMMY BASEBL_M RACQ_M DUMMY SKI_CR_M DUMMY BASKET_M VOLLEY_M SOCCER_M FOOTBL_M OTR_A1_M OTR_A2_M ; ARRAY HRT_RATE(23) WALK_H YARD_H DUMMY LIFT_H RUN_H AERO_H BIKE_H STAIR_H SWIM_H TENNIS_H DUMMY DUMMY BASEBL_H RACQ_H DUMMY SKI_CR_H DUMMY BASKET_H VOLLEY_H SOCCER_H FOOTBL_H OTR_A1_H OTR_A2_H ; ARRAY KCALPI(23) WALK_K YARD_K STRT_K LIFT_K RUN_K AERO_K BIKE_K STAIR_K SWIM_K TENNIS_K GOLF_K BOWL_K BASEBL_K RACQ_K SKI_DH_K SKI_CR_K SKI_WA_K BASKET_K VOLLEY_K SOCCER_K FOOTBL_K OTR_A1_K OTR_A2_K ; ARRAY INTEN(23,3) (3, 4, 5, /* 1 Walk */ 3, 5, 7, /* 2 Yard */ 2, 2, 2, /* 3 Stretch */ 3, 5, 7, /* 4 Wt Lifting */ 9, 11, 13, /* 5 Running */ 4, 6, 9, /* 6 Aerobics */ 3, 7, 10, /* 7 Biking */ 4, 6, 8, /* 8 STAIRS */ 3, 5, 9, /* 9 Swimming */ 4, 6, 10, /* 10 Tennis */ 3, 3, 3, /* 11 Golf */ 2, 2.5, 3, /* 12 Bowling */ 3, 4, 5, /* 13 Baseball */ 6, 9, 12, /* 14 Handball/Racquetball */ 4, 6, 8, /* 15 Skiing, DH */ 5, 9, 13, /* 16 Skiing, CR */ 5, 7, 9, /* 17 Skiing, WA */ 6, 8, 11, /* 18 Basketball */ 5, 6, 8, /* 19 Volleyball */ 5, 7, 11, /* 20 Soccor */ 5, 6, 7.5, /* 21 Football */ 3, 4, 5, /* 22 Other EXERCISE 1 */ 3, 4, 5); /* 23 Other EXERCISE 2 */ ************************************************************ * Do loop to check status of all activities and sum up * * final value of KCAL for a person * ************************************************************; LENGTH T 3 M 3 H 3; KCAL = 0; ANYYES = 0; ANYGOOD = 0; ANYDK = 0; DO I = 1 TO 23; T = TIMES(I); M = MINUTES(I); H = HRT_RATE(I); ************************************************************ * Impute values for duration and heart rate for selected * variables not asked in 1991, 1995 or 1998. Inputed for * comparability of recodes across data years. ************************************************************; SELECT; WHEN (I EQ 3) DO; * STRETCHING; H = 8; END; WHEN (I EQ 11) DO; * GOLF; M = 180; H = 8; END; WHEN (I EQ 12) DO; * BOWLING; M = 90; H = 8; END; WHEN (I EQ 15) DO; * DOWNHILL SKIING; M = 120; H = 8; END; WHEN (I EQ 17) DO; * WATER SKIING; M = 120; H = 8; END; OTHERWISE; END; IF EXERCISE(I) EQ 1 THEN DO; ANYYES = 1; IF (1 LE T LE 100) AND (1 LE M LE 500) THEN DO; ANYGOOD = 1; SELECT; WHEN (H IN (4, 7, 8, 9)) H = 1; WHEN (H IN (1, 2, 3)); OTHERWISE; END; KCALPI(I) = ROUND (T * M / 60 * INTEN(I,H) / 14, .1) ; IF KCALPI(I) GT 99999.5 THEN KCALPI(I) = 99999.5; * Topcode where KCAL=99999.5+ *; KCAL + KCALPI(I); END; ELSE ANYDK = 1; END; ELSE IF (EXERCISE(I) IN (7, 8, 9)) THEN ANYDK = 1; ELSE; END; IF ANYGOOD = 1 THEN ANYDK = 0; ELSE; *----------------------------------------------; SELECT; WHEN (ANYYES) DO; IF ANYGOOD THEN KCAL = ROUND (KCAL, .1); ELSE IF ANYDK THEN KCAL = 99999.9; ELSE; END; OTHERWISE DO; IF (ANYDK) THEN KCAL = 99999.9; ELSE KCAL = 0; END; END; ************************************************** * Assign value for PA_LEVEL based on KCAL * **************************************************; SELECT; WHEN (0.0 LE KCAL LT 1.5) DO; PA_LEVEL = 1; END; WHEN (1.5 LE KCAL LT 3.0) DO; PA_LEVEL =2; END; WHEN (3.0 LE KCAL LE 99999.5) DO; PA_LEVEL = 3; END; WHEN (KCAL EQ 99999.9) DO; PA_LEVEL = 9; END; END; RUN; proc freq data=NHIS.HP98_KCAL ; tables PA_LEVEL ; format PA_LEVEL PA_LEVEL.; run; proc freq data=NHIS.HP98_KCAL ; tables KCAL ; format _ALL_; run;