为什么Compress功能在SAS Enterprise Guide中不起作用?

时间:2018-05-30 08:05:09

标签: sas left-join proc-sql enterprise-guide sas-studio

我目前正在将我的软件包从SAS Base重组为SAS Enterprise Guide,以便将知识转移到客户端。不幸的是,我必须牺牲的一个方面是在proc sql left join中使用compress到strip的更改,例如以下代码不起作用

   data have;
   input ID VarA;
   datalines;

   1 2
   2 3
   3 4
   4 5
   ;
   run;

   data have1;
   input ID Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9;
   datalines;
   1 3 4 6 7 3 6 6 7 8
   2 2 2 2 2 5 6 7 2 1
   3 5 6 7 8 4 5 3 4 3
   4 3 4 6 7 4 6 8 3 6
   ;
   run;


   proc sql;
    create table Want as
    select a.*
      ,b.Var1
      ,b.Var2
      ,b.Var3
      ,b.Var4
      ,b.Var5
      ,b.Var6
      ,b.Var7
      ,b.Var8
      ,b.Var9
    from Have as a
    left join Have1 as b
    on compress(a.ID) = compress(b.ID);
   quit;

我有时可以使用条带功能,但是提供带有压缩的包更安全,因为观察中通常会放错位置。任何想法?

编辑:为了进一步避免混淆,我通常使用compress函数来查找像EURIBOR 006m这样的债券的参考汇率 - 这使我的通用示例不正确,但左连接通常使用字符变量

2 个答案:

答案 0 :(得分:0)

您需要一个字符变量来使用compress函数。您的ID变量是数字。

答案 1 :(得分:0)

尝试转换为角色:

    const Person template_person{ 10, "test" };
    Person p2 = template_person;
    p2.set_age(20);