有没有简单的方法在SAS中创建重复变量?

时间:2018-03-06 22:43:15

标签: sas

假设我有一个数据集:

Product DMA Home_sales
A       1      5
A       2      12
A       3      13
B       1      5
B       2      12
B       3      13

是否有简单的方法/捷径来获取数据集,其中包含按产品划分的变量:

Product DMA Home_sales_A  Home_sales_B 
A       1      5              0
A       2      12             0
A       3      13             0
B       1      0              5
B       2      0              12
B       3      0              13

我有100个变量需要按产品进行此类转换,因此编写多个if语句或是否有更有效的方法是唯一的操作过程?

2 个答案:

答案 0 :(得分:2)

您可以尝试通过SQL使用宏执行此操作:

    DATA have;
    INPUT Product $ DMA Home_sales;
    CARDS;
A       1      5
A       2      12
A       3      13
B       1      5
B       2      12
B       3      13
;

%macro transform_product();
    PROC SQL noprint;
        * get product names ;
        SELECT distinct Product into :products SEPARATED BY " " FROM have;

        * create columns for sales using case ;
        CREATE TABLE want as SELECT *
        %do i=1 %to %SYSFUNC(countw(&products.));
            %LET prod=%SYSFUNC(scan(&products.,&i.," "));
            ,CASE WHEN Product="&prod." then Home_sales else 0 end as Home_Sales_&prod.
        %end;
        FROM have;
    QUIT;
%mend transform_product;

%transform_product();

答案 1 :(得分:1)

这是一种方式,但您需要提前知道组的数量。这将计算该值,然后在下一步中使用它。

>=3.10.10