我有一张表,其中列出了每个月n个时段的帐号列表。我需要制作如下所示的存储桶字符串。.请帮助(基本SAS)
ACC Bucket Month bucketstring
123 0 jan18 0
123 1 feb18 10
123 2 mar18 210
345 0 feb18 0
345 1 mar18 10
答案 0 :(得分:1)
retain
语句用于在DATA
步骤期间发生的隐式循环的迭代过程中保持未设置变量的值。
此示例适用于最长15个月(0..15)的ACC
个组。拥有更多月份的ACC将在日志中看到一条消息put
。
data want;
set have;
by ACC;
length bucketstring $20; * bucketstring might have to be made longer;
retain buckstring;
if length (bucketstring) = 20 and not first.ACC then
put 'ERROR: bucketstring has to be longer for the case of ' ACC= month=;
if first.ACC
then bucketstring = cats(month);
else bucketstring = cats(bucketstring,month);
run;
cats
函数连接项目。这些项目会自动删除开头和结尾的空格,并在必要时自动将数字项目转换为字符值。