2

行の値が 1 ~ 5 のような場合に、行を複数の行に分割する方法を教えてください。その理由は、1 行でカウントするときのように、1 ではなく 5 になるように 1 ~ 5 をカウントする必要があるためです。

ID、値、およびそれが属する場所があります。

例として:

ID  Value Page
1    1-5   2

私が望む出力は次のようなものです:

ID Value Page
1    1    2
1    2    2
1    3    2
1    4    2
1    5    2

IF文を使ってみた

IF bioVerdi='1-5' THEN
        DO;
            ..
        END;

そのため、DO の間に何を入れればよいかわかりません。そして終わり;。ここで私を助ける手がかりはありますか?

4

2 に答える 2

3

これは、例で指定された実際の値「1-5」に制限されていない別のソリューションですが、「1-6」、「1-7」、「1-100」などの形式の任意の値に対して機能します.

*this is the data you gave ;
data have ; 
    ID = 1 ; 
    value = '1-5';
    page = 2;
run;

data want ; 
 set have ; 

 min = scan( value, 1, '-' ) ; * get the 1st word, delimited by a dash ;
 max = scan( value, 2, '-' ) ; * get the 2nd word, delimited by a dash ;

 /*loop through the values from min to max, and assign each value as the loop iterates to a new column 'NEWVALUE.' Each time the loop iterates through the next value, output a new line */
 do newvalue = min to max ;
    output ; 
 end;

 /*drop the old variable 'value' so we can rename the newvalue to it in the next step*/
 drop value min max; 

 /*newvalue was a temporary name, so renaming here to keep the original naming structure*/
 rename newvalue = value ; 

run;
于 2015-04-27T00:49:19.877 に答える