Как я могу создать строку, повторенную столько раз, сколько и предыдущая переменная? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь написать код в 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 часов утра следует повторить 5 раз в два раза, второе - 6 и т. д.). Кто-нибудь может мне помочь?большое спасибо!

1 Ответ

0 голосов
/ 29 января 2019

Используйте цикл 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;
...