如何使一列三个。SAS

如何使一列三个。SAS,sas,Sas,我有一个数据集,我需要创建一个新的一列,由三列组成。我知道,我应该使用proc报告 I have: Number Name Food Clothes Weather 01 100 bread socks rain 02 103 apple shirt snow 02 103 milk skirt fog 03 101 meat jacket sun I need:

我有一个数据集,我需要创建一个新的一列,由三列组成。我知道,我应该使用proc报告

I have:

Number  Name   Food   Clothes   Weather
01      100   bread    socks     rain
02      103   apple    shirt     snow
02      103   milk     skirt     fog
03      101   meat     jacket    sun


I need:
Number  Name   COL
01      100   bread    
              socks     
              rain
02      103   apple    
              shirt    
              snow
02      103   milk    
              skirt   
              fog
03      101   meat
              jacket
              sun

不确定为什么要为此使用proc报告。可以通过几个表格来完成:

data have;
   input Number Name  Food $ Clothes $ Weather $;
   datalines;
01      100   bread    socks     rain
02      103   apple    shirt     snow
02      103   milk     skirt     fog
03      101   meat     jacket    sun
    ;
run;

data have2;
    set have;
    id = _n_;
run;

proc sql;
    create table want1 as select
        number, name, food as third_var, id
        from have2;
    create table want2 as select
        number, name, clothes as third_var, id
        from have2;
    create table want3 as select
        number, name, weather as third_var, id
        from have2;
quit;

data want_stack;
    set want1 want2 want3;
    proc sort; by number id;
run;

SO的一般过程是发布您尝试过的内容—这是一个帮助代码和调试的地方,而不是一个代码编写服务。请试一试,其他人会非常乐意帮忙的。在您的情况下,您需要通过转置和proc报告重新构造数据集。这是可行的,但结果是数据集编号、名称、第三个变量(每个数字对应食物,然后每个数字对应衣服,然后每个数字对应天气),但在任务中,我需要第三个变量,即食物、衣服、天气,然后食物、衣服,天气是另一个数字。请看我的编辑-您只需要添加一个变量,让您跟踪事物的原始位置。然后可以使用此变量对结果进行排序。