首页 > 解决方案 > 如何使用前一行 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

标签: sas

解决方案


该语句用于在步骤retain期间发生的隐式循环的迭代中维护未设置变量的值。DATA

此示例适用于ACC最长 15 个月 (0..15) 的组。拥有更多月份的 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函数连接项目。这些项目会自动去除前导和尾随空格,并在必要时自动将数字项目转换为字符值。


推荐阅读