保留循环中的值

时间:2015-09-03 20:36:25

标签: sas

我在列中有一系列值 - 第一个值是类别描述,不同的类别由空行分隔。在下面的示例中,第一个类别称为A,第二个类别称为T,第三个类别称为R.

我想要做的是保留类别名称的第一个实例,并创建一个按类别开头的新字段名称。看下面有/想要的。有什么想法吗?

例如:

data example;
   input have $1. want $4.;
   datalines;
A    
T A_T
G A_G

T    
R T_R
E T_E
W T_W

R    
H R_H
R R_R
;

1 个答案:

答案 0 :(得分:1)

您应该考虑在SAS中使用retain语句来携带值和lag语句,以确定何时需要重置保留值。

data have;
    input category $1.;
    datalines;
A    
T
G

T  
R
E
W

R    
H
R
;

data want (drop=category_retained);
    set have;
    length subcategory $3.;
    retain category_retained "";

    if lag(category) = "" then
        do;
            subcategory = "";
            category_retained = category;
        END;

    if lag(category) ne "" and category ne "" then
        do;
            subcategory = CATX("_",category_retained,category);
        END;
RUN;