我正在做同样的10个子步骤转换到多个数据集。我们称这种转变为flag_price_change
此转换将数据集和阈值(实际)作为输入,并创建10个子数据集,以便提供具有一些添加列的最终数据集。正如我之前所说,我重复这个转换到多个数据集
当我以相同的方式处理多个数据表时,我想知道我是否可以在SAS中创建这样的函数。
flag_price_change(input_table,column_name1,column_name2,threshold,output_table).
其中column_name 1和2只是算法只关注的列的名称,而output_table应该是执行flag_price_change函数后创建的表。
问题:
答案 0 :(得分:2)
SAS功能用于单独观察数据。你想要的是一个宏(查看入门指南here),其定义如下:
%macro flag_price_change(input_table, column_name1, column_name2, threshold, output_table);
/** Inside the macro, you can refer to each parameter/argument
with an ampersand in front of it. So for example, to add
column_name1 to column_name2, you would do the following:
**/
DATA &output_table;
set &input_table;
new_variable = &column_name1 + &column_name2;
RUN;
%mend;
要调用宏,您可以这样做:
%flag_price_change(
input_table = data1,
column_name1 = var1,
column_name2 = var2,
threshold = 0.5,
output_table = output1);
在具有不同变量名称和阈值的另一个数据集上调用相同的代码:
%flag_price_change(
input_table = data2,
column_name1 = var3,
column_name2 = var4,
threshold = 0.25,
output_table = output2);
有很多关于宏编程的技巧和捕捉要注意,所以请在每一步检查你的工作。