首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SAS数组创建带后缀的新变量

使用SAS数组创建带后缀的新变量
EN

Stack Overflow用户
提问于 2016-08-04 18:49:15
回答 2查看 922关注 0票数 1

我正在尝试使用一个数组来创建新的变量(比如每年的变化和每周的变化)。我希望保持一个命名约定,这样我就可以指定"orders“,然后使用数组来生成"orders_LY”和"orders_LW“

这个可以工作(来自下面的代码)

代码语言:javascript
复制
 LW=lag1(figures{i});

尽管这不是我想要的,

这个不是

代码语言:javascript
复制
figures{i}_LY=lag53(figures{i});


data summary_&type._&date.; 
    set summary;


    array figures {5} tv_total_orders_&type. tv_total_bookings_&type. TV_AOV_&type. total_orders_&type. total_bookings_&type. ;
    do i=1 to 5;

    LW=lag1(figures{i});
    figures{i}_LY=lag53(figures{i});


    end;
    run;
EN

回答 2

Stack Overflow用户

发布于 2016-08-05 00:11:42

Joe是正确的,因为您不能动态地定义它们,但是您可以单独创建所需的结构,然后基于现有结构定义数组。下面是一个例子:

创建一些我们想要添加后缀的变量:

代码语言:javascript
复制
data fields;
  length field $50;
  input field $;
  datalines;
orders
sold
billed
cost
gp
;
run;

添加后缀:

代码语言:javascript
复制
data config;
  length new_name $50;
  set fields;
  new_name = field; output;
  new_name = cats(field,'_LW'); output;
  new_name = cats(field,'_LY'); output;
  dummy=1;
run;

转置它以获得作为列名的后缀变量:

代码语言:javascript
复制
proc transpose data=config out=trans(drop=_name_);
  id new_name;
  var dummy;
run;

现在,您可以基于现有名称定义数组。

票数 2
EN

Stack Overflow用户

发布于 2016-08-04 23:06:24

因此,您不能在数据步骤中即时修改数组变量名称。在进行数据步骤编译时,必须知道变量名。

您有两个选项,然后:

首先,您可以创建第二个数组,如下所示:

代码语言:javascript
复制
figures_ly {5} tv_total_orders_&type._ly tv_total_bookings_&type._ly TV_AOV_&type._ly total_orders_&type._ly total_bookings_&type._ly ;

(您可能需要进行变量属性初始化,我不知道您的数据。)如果您在进行编程时知道需要什么,并且变量列表不会更改,那么这是最好的。

其次,您可以使用宏语言来定义这些LY变量。如果您需要经常更改变量列表,并且/或者直到运行程序(它是数据驱动的)才知道列表时,这更合适。如果是这样的话,你应该发布更多关于如何确定列表以获得有用响应的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38765282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档