将单个变量值拆分为两个

时间:2016-08-11 07:41:21

标签: sas

我有数据集a

data q7;
input trt$;
cards;
a150
b250
c300
400
abc180
;
run;

我们必须像这样创建数据集b

trt    dose
a150   150mg
b250   250mg
c300   300mg
400    400mg
abc180 180mg

添加新的剂量变量& mg是在每次之后写的 数值

1 个答案:

答案 0 :(得分:1)

这是我的解决方案 - 基本上使用compress函数来保留'k'变量中的trt个数字。从那里开始就是将 mg 连接到数字的情况。

data want;
set q7;
dose = cats(compress(trt,'0123456789','k'),'mg');
run;

compress函数默认行为是返回从原始字符串中删除指定字符的字符串。

所以

compress(trt,'0123456789')会删除trt变量中的所有数字。

compress附带了一组修饰符,可让用户更改默认行为。 因此,在您的情况下,我们希望保留数字而不管前面的字母数量,因此我使用修饰符k代替此例中的字符列表012345679

有关修饰符的完整列表,请阅读以下link

cats是SAS必须连接字符串的众多函数之一,因此将compress参数作为第一个字符串传递,将 mg 作为第二个字符串传递将连接两个产生你想要的结果

希望有所帮助