Sas Proc report-调用Define更改分组变量下第二行的格式?

Sas Proc report-调用Define更改分组变量下第二行的格式?,sas,proc-report,Sas,Proc Report,我想对几个列应用预定义的格式,但只对一个变量应用。问题是,这个变量有两个子组,左和右,我的代码只改变第一个子组的格式-左,而不是第二个子组-右。我想对第二个子组应用相同的格式-对 这是我的密码: DATA have; INPUT subject $ variable $ parameter $ V1-V6; DATALINES; A-001 qAF Left 1 2 3 4 5 6 A-001 qAF Right 1 2 3 4 5

我想对几个列应用预定义的格式,但只对一个变量应用。问题是,这个变量有两个子组,左和右,我的代码只改变第一个子组的格式-左,而不是第二个子组-右。我想对第二个子组应用相同的格式-对

这是我的密码:

DATA have;                
INPUT subject $ variable $ parameter $ V1-V6;      
DATALINES;          
A-001 qAF Left 1 2 3 4 5 6
A-001 qAF Right 1 2 3 4 5 6
A-001 Cortical Left 1 1 1 1 1 1
A-001 Cortical Right 1 2 1 1 1 1
A-001 Posterial Left 1 1 1 2 1 1
A-001 Posterial Right 1 1 1 1 1 3
;
RUN; 

PROC FORMAT;
VALUE cort
1 = 'C1'
2 = 'C2';
RUN;

PROC REPORT DATA = have;
COLUMNS subject variable parameter V1 V2 V3 V4 V5 V6 dummy;
    DEFINE subject / ORDER;
    DEFINE variable / ORDER;
    DEFINE dummy / COMPUTED NOPRINT;
    COMPUTE dummy;
    IF variable = 'Cortical' THEN DO;
       DO i = 4 TO 9;
         CALL DEFINE (i, 'format', 'cort.');
       END;
    END;
    ENDCOMP;
    COMPUTE AFTER variable; 
       LINE ' '; 
    ENDCOMP;
    OPTIONS missing = ''; 
RUN;

您需要保存变量的值。参见前面的计算

PROC REPORT DATA = have;
   COLUMNS subject variable parameter V1 V2 V3 V4 V5 V6 dummy;
   DEFINE subject / ORDER;
   DEFINE variable / ORDER;
   DEFINE dummy / COMPUTED NOPRINT;
   compute before variable;
      hold=variable;
      endcomp;
   COMPUTE dummy;
      IF hold = 'Cortical' THEN DO;
         DO i = 4 TO 9;
            CALL DEFINE (i, 'format', 'cort.');
            END;
         END;
      ENDCOMP;
   COMPUTE AFTER variable; 
      LINE ' '; 
      ENDCOMP;
   OPTIONS missing = ''; 
   RUN;

您需要保存变量的值。参见前面的计算

PROC REPORT DATA = have;
   COLUMNS subject variable parameter V1 V2 V3 V4 V5 V6 dummy;
   DEFINE subject / ORDER;
   DEFINE variable / ORDER;
   DEFINE dummy / COMPUTED NOPRINT;
   compute before variable;
      hold=variable;
      endcomp;
   COMPUTE dummy;
      IF hold = 'Cortical' THEN DO;
         DO i = 4 TO 9;
            CALL DEFINE (i, 'format', 'cort.');
            END;
         END;
      ENDCOMP;
   COMPUTE AFTER variable; 
      LINE ' '; 
      ENDCOMP;
   OPTIONS missing = ''; 
   RUN;