我正在处理一个非常大的数据集(超过100个变量和1100万个观察值)。在这个数据集中,我在DATE9中有一个名为DTDSI (模拟日期)的变量。格式。(例如: 01APR2015,02MAR2015...)。我有一个宏程序,通过比较两个不同月份的观察值来分析这个数据集:
%macro analysis (data_input , m , m_1);
.....
%mend;两个宏变量m和m_1是我想要比较的月份。它们的格式是MONYY7。(APR2015,MAR2015...)。记住,我不能修改我的data_input (它是我公司的数据)。在我的宏程序的开始,我想创建一个新的数据集,只包含&m和&m_1月份的观测值。我可以很容易地从DTDSI (ex为real_month)创建一个新的date变量,但格式为MONYY7。然后我只选择real_month等于&m或real_month等于&m的观测值:
Data new;
Set &data_input;
mois_real = input(DTDSI,MONYY7);
RUN;
PROC SQL;
CREATE TABLE NEW AS;
SELECT *
WHERE mois_real in ("&m" , "&m_1")
FROM NEW;
....问题是,在我的第一个数据语句中,我复制了我的data_input;这很糟糕,因为它花了30分钟。那么,您能告诉我如何在第一个语句中正确选择(DTDSI =m和DTDSI=m_1)吗?
发布于 2015-07-15 00:05:54
您可以在where/if条件中使用公式,因此请将步骤1中的公式应用到步骤2中,反之亦然。
Data new;
set &data_input;
WHERE put(DTDSI,MONYY7) in ("&m" , "&m_1");
run;https://stackoverflow.com/questions/31411750
复制相似问题