【问题标题】:SAS, define macro variableSAS,定义宏变量
【发布时间】:2018-04-18 22:16:02
【问题描述】:

我需要定义以下变量。用户需要在组中指定输入变量,可以是1、2、3个变量,比如A,或者A,B,或者A,B,C。现在还需要手动指定group_2和group_3。但是如你所见,只要组输入是固定的,那么 group_2 和 group_3 也是固定的。

有什么方法可以让宏变量输入更简洁(用户只需要输入group,就会自动生成group_1和group_2)?

%let group = A B;
%let group_2 = A, B;
%let group_3 = A trimmed, : B trimmed;

%let group = A B C;
%let group_2 = A, B, C;
%let group_3 = A trimmed, : B trimmed, : C trimmed;

【问题讨论】:

  • 你尝试了什么?你在考虑什么方法?

标签: macros sas


【解决方案1】:

假设 SAS 变量名称是标准名称,您可以使用 TRANWRD 将空格分隔的项目列表转换为更复杂的形式。

compbl 将重复的空格替换为单个空格
tranwrd 用于将分隔项目的空格替换为一致的复杂化注入

%let list = %sysfunc(compbl(&list));
%let list_csv = %sysfunc(tranwrd(&list,%str( ),%str(,)));
%let list_into = :%sysfunc(tranwrd(&list,%str( ),%str( trimmed, :))) trimmed;

%put NOTE: &=list;
%put NOTE: &=list_csv;
%put NOTE: &=list_into;

【讨论】:

  • 在哪里可以定义 A、B、C?在真实数据中,A 可能是收入、性别、教育......等。能给我举个例子吗?
猜你喜欢
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多