1

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

这是我的代码:

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;

在此处输入图像描述

4

1 回答 1

0

您需要保持 VARIABLE 的值。请参阅之前计算。

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;
于 2019-12-18T14:13:25.413 回答