如何创建与上一个变量重复多次的行?

时间:2019-01-29 13:13:08

标签: sql macros sas rows

我正在尝试在SAS中编写代码。我有一个数据集,如下所示:

data one;

input  CLI  date date9.  time time8. ;
format date date9. time hhmm8. ;
cards;
5 01apr2014 10:00:00 
6 01apr2014 11:00:00 
10 01apr2014 12:00:00 
4 02Apr2014 10:00:00 
20 02apr2014 11:00:00 
12 02apr2014 12:00:00 
;
run;

我想获得一个数据集,如下所示:

data two;

date time New_cli
01apr2014 10:00:00 1
01apr2014 10:00:00 1
01apr2014 10:00:00 1
01apr2014 10:00:00 1
01apr2014 10:00:00 1
01apr2014 11:00:00 1
01apr2014 11:00:00 1
01apr2014 11:00:00 1
01apr2014 11:00:00 1
01apr2014 11:00:00 1
01apr2014 11:00:00 1
.
.
.
02Apr2014 10:00:00 1
02Apr2014 10:00:00 1
02Apr2014 10:00:00 1
02Apr2014 10:00:00 1
.
.

照这样,数据“一个”中的每个观察都应在“两个”中重复进行CLI时间(例如,在一个1/04 10 am中的第一次观察应在两次中重复5次,第二个则重复6次,依此类推。 ) 有什么可以帮助我的吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

使用do中的1 to CLI循环,并在循环中使用output语句为循环的每次迭代输出一行。 SAS会自动将CLI解析为其所保存的值,并准确运行do循环多次。

data want;
    set have;

    do i = 1 to CLI;
        new_cli = 1;
        output;           
    end;

    drop i;
run;