如何手动生成虚拟变量?

时间:2017-05-26 08:14:54

标签: sas statistics regression dummy-variable

这是freq程序:

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

1 个答案:

答案 0 :(得分:1)

对于前两个变量	 00'和' 30'我猜这些在字符变量$ 5中是正确的。实际上是' 9:00'和' 9:30'

通常,您不需要在SAS中创建虚拟对象,而是可以使用CLASS语句。如果你想创建它们,有两个有用的程序PROC GLMMOD和PROC TRANSREG。

包含示例数据通常很有帮助。