我在列中有一系列值 - 第一个值是类别描述,不同的类别由空行分隔。在下面的示例中,第一个类别称为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
;
答案 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;