我有数据集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是在每次之后写的 数值
答案 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 作为第二个字符串传递将连接两个产生你想要的结果
希望有所帮助