SAS:将数据组拆分为自己的行

时间:2017-03-27 10:16:26

标签: sas proc-sql datastep

我是SAS的新手,发现自己不得不将它用于我的新工作。所以这是一个基本问题。

我有一张看起来像这样的表:

COMPANY | Employee
--------|----------
COMP1   | @,@,@,@
COMP2   | @
COMP3   | @,@
...

每个@都是第一行中公司员工的电子邮件地址 - 除以逗号。 现在我想使用Data步骤为每个电子邮件提供自己的行。每个都在第一行中有相应的公司名称。像这样:

COMPANY | Employee
--------|----------
COMP1   | @
COMP1   | @
COMP1   | @
COMP1   | @
COMP2   | @
COMP2   | @
...

我希望这已经足够了。

提前谢谢你 扬

1 个答案:

答案 0 :(得分:1)

以下代码可以解决您的问题。请注意,我使用50个符号来存储电子邮件,如果您认为可能会遇到更长的电子邮件,则会增加第二个数据步骤的长度。第一个数据步骤只是我用于测试的一个例子。

data tmp1;
    length COMP EMAIL $50.;

    comp="CMP1";
    email="ABC@cmp1.com, DEF@cmp1.com, GHI@comp1.com";
    output;

    comp="CMP2";
    email="ABC@cmp2.com, DEF@cmp2.com";
    output;
run;

data tmp2;
    set tmp1;
    i=1;
    length new_email $50;

    do while(scan(email, i, ",") ne "");
        new_email = strip(scan(email, i, ","));
        i+1;
        output;
    end;
    drop email i;
run;