** SAS Code for Scoring FIQL **; ** **; ** 1 Assumes variables are named as they appear in instrument. **; ** 2 Assumes data is stored in a SAS dataset. **; ** 3 Italics identifies code that needs to changed by user depending **; ** on where data is stored and name of SAS dataset. **; OPTIONS NOCENTER LS=110 PS=60; TITLE 'SAS CODE TO SCORE FIQL'; libname MYDATA 'U:\ANALYSIS\fi\test_dbase'; *** SAS CODE FOR SCORING THE FIQL ***; *** DATA STEP CODE ***; DATA FIQLBASE; SET MYDATA.FIQLIN; PROC SORT DATA=FIQLBASE OUT=FIQLSORT; BY ID; data recode; set fiqlsort; RVQ1=.; RVQ1=((1+5)-Q1); *REVERSE CODE Q1; RQ1=.; RQ1=RVQ1*.8; *CHANGE Q1 TO A 4 POINT RESPONSE SCALE; IF (RQ1 GT 0) THEN DO; *DUE TO CONVERTING Q1 4 POINT SCALE; IF (RQ1 LT 1) THEN RQ1=1; *IF CAN VALUES BELOW 1 AND ABOVE 4; IF (RQ1 GT 4) THEN RQ1=4; *THIS CODE SET VALUES BELOW 1 TO 1 AND ABOVE 4 TO 4; END; Q1=RQ1; RQ4=.; RQ4=Q4*.67; *CHANGE Q4 TO A 4 POINT RESPONSE SCALE; IF (RQ4 GT 0) THEN DO; *DUE TO CONVERTING Q4 4 POINT SCALE; IF (RQ4 LT 1) THEN RQ4=1; *IF CAN VALUES BELOW 1 AND ABOVE 4; IF (RQ4 GT 4) THEN RQ4=4; *THIS CODE SET VALUES BELOW 1 TO 1 AND ABOVE 4 TO 4; END; Q4=RQ4; MFIQL1=NMISS(Q2A,Q2B,Q2C,Q2D,Q2E,Q2G,Q2H,Q3B,Q3L,Q3M); *# OF ITEMS WITH MISSING VALUES SCALE1; MFIQL2=NMISS(Q2F,Q2I,Q2J,Q2K,Q2M,Q3C,Q3H,Q3J,Q3N); *# OF ITEMS WITH MISSING VALUES SCALE2; MFIQL3=NMISS(Q1,Q3D,Q3F,Q3G,Q3I,Q3K,Q4); *# OF ITEMS WITH MISSING VALUES SCALE3; MFIQL4=NMISS(Q2L,Q3A,Q3E); *# OF ITEMS WITH MISSING VALUES SCALE4; DROP RVQ1 RQ1 RQ4; *DROP TEMPORARY VARIABLES; DATA STANFIQL; SET RECODE; ** REPLACE MISSING RESPONSES WITH MEAN VALUE; PROC STANDARD DATA=STANFIQL REPLACE OUT=FIMissrp; VAR Q2A Q2B Q2C Q2D Q2E Q2G Q2H Q3B Q3L Q3M Q2F Q2I Q2J Q2K Q2M Q3C Q3H Q3J Q3N Q1 Q3D Q3F Q3G Q3I Q3K Q4 Q2L Q3A Q3E; RUN; DATA FIQLMISR; MERGE STANFIQL FIMISSRP; BY ID; IF (MFIQL1 GE 5) THEN FIQLS1=.; ELSE FIQLS1=MEAN(Q2A,Q2B,Q2C,Q2D,Q2E,Q2G,Q2H,Q3B,Q3L,Q3M); *DETERMINE SCORE FOR SCALE 1: *ALLOWS UP TO 4 ITEMS TO HAVE MISSING VALUES; IF (MFIQL2 GE 5) THEN FIQLS2=.; ELSE FIQLS2=MEAN(Q2F,Q2I,Q2J,Q2K,Q2M,Q3C,Q3H,Q3J,Q3N); *DETERMINE SCORE FOR SCALE 2: *ALLOWS UP TO 4 ITEMS TO HAVE MISSING VALUES; IF (MFIQL3 GE 3) THEN FIQLS3=.; ELSE FIQLS3=MEAN(Q1,Q3D,Q3F,Q3G,Q3I,Q3K,Q4); *DETERMINE SCORE FOR SCALE 3: *ALLOWS UP TO 2 ITEMS TO HAVE MISSING VALUES; IF (MFIQL4 GE 2) THEN FIQLS4=.; ELSE FIQLS4=MEAN(Q2L,Q3A,Q3E); *DETERMINE SCORE FOR SCALE 3: *ALLOWS 1 ITEM TO HAVE A MISSING VALUE; LABEL FIQLS1='FIQL SCALE 1: LIFESTYLE' FIQLS2='FIQL SCALE 2: COPING/BEHAVIOR' FIQLS3='FIQL SCALE 3: DEPRESSION/SELF PERCEPTION' FIQLS4='FIQL SCALE 4: EMBARRASSMENT'; DATA FIQLSCORE; SET FIQLMISR; PROC MEANS DATA=FIQLSCORE N MIN MAX MEAN STD MAXDEC=2; VAR FIQLS1 FIQLS2 FIQLS3 FIQLS4; RUN;