如何使用上一行SAS的值创建字符串

时间:2019-01-17 11:11:22

标签: sas

我有一张表,其中列出了每个月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

1 个答案:

答案 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函数连接项目。这些项目会自动删除开头和结尾的空格,并在必要时自动将数字项目转换为字符值。