2017-05-26 44 views
1

这里是频率过程:如何手动生成虚拟变量?

freq procedure

为什么是TRD_EVENT_ROUFOR_1 & TRD_EVENT_ROUFOR_2列完全零? 为什么它没有显示其他的假人(例如TRD_EVENT_ROUFOR_8)? 问题是什么?我的代码哪部分是错的?

这是我的代码?

DATA Sampledata87_02_Mer_DumVar; 
    SET Sampledata87_02_Mer ; 

    IF TRD_EVENT_ROUFOR = '9:00' THEN TRD_EVENT_ROUFOR_1 = 1; 
    ELSE TRD_EVENT_ROUFOR_1 = 0; 
    IF TRD_EVENT_ROUFOR = '9:30' THEN TRD_EVENT_ROUFOR_2 = 1; 
    ELSE TRD_EVENT_ROUFOR_2 = 0; 
    IF TRD_EVENT_ROUFOR = '10:00' THEN TRD_EVENT_ROUFOR_3 = 1; 
    ELSE TRD_EVENT_ROUFOR_3 = 0; 
    IF TRD_EVENT_ROUFOR = '10:30' THEN TRD_EVENT_ROUFOR_4 = 1; 
    ELSE TRD_EVENT_ROUFOR_4 = 0; 
    IF TRD_EVENT_ROUFOR = '11:00' THEN TRD_EVENT_ROUFOR_5 = 1; 
    ELSE TRD_EVENT_ROUFOR_5 = 0; 
    IF TRD_EVENT_ROUFOR = '11:30' THEN TRD_EVENT_ROUFOR_6 = 1; 
    ELSE TRD_EVENT_ROUFOR_6 = 0; 
    IF TRD_EVENT_ROUFOR = '12:00' THEN TRD_EVENT_ROUFOR_7 = 1; 
    ELSE TRD_EVENT_ROUFOR_7 = 0; 
    IF TRD_EVENT_ROUFOR = '12:30' THEN TRD_EVENT_ROUFOR_8 = 1; 
    ELSE TRD_EVENT_ROUFOR_8 = 0; 
    IF TRD_EVENT_ROUFOR = '13:00' THEN TRD_EVENT_ROUFOR_9 = 1; 
    ELSE TRD_EVENT_ROUFOR_9 = 0; 
RUN; 

PROC FREQ DATA=Sampledata87_02_Mer_DumVar; 
    TABLES TRD_EVENT_ROUFOR*TRD_EVENT_ROUFOR_1*TRD_EVENT_ROUFOR_2*TRD_EVENT_ROUFOR_3*TRD_EVENT_ROUFOR_4*TRD_EVENT_ROUFOR_5/list ; 
RUN; 

而且,这里是CONTENTS步骤:

CONTENTS Procedure

+0

阿明,请你能添加一些有用的数据。 –

回答

1

对于前两个变量 '9:00' 和 '9:30' 我会想这些都是右对齐的字符变量$ 5。实际上是'9:00'和'9:30'。

通常,您不需要在SAS中创建虚拟变量,您可以改为使用CLASS语句。如果您确实想要创建它们,则有两个有用的PROC GLMMOD和PROC TRANSREG的过程。

包括示例数据通常很有用。