Я работаю над очень большим набором данных (более 100 переменных и 11 миллионов наблюдений). В этом наборе данных у меня есть переменная с именем DTDSI (дата моделирования) в DATE9. формат. (Например: 01APR2015, 02MAR2015 ...). У меня есть макро-программа для анализа этого набора данных пути сравнения наблюдений в 2-х разные месяцах:MONYY7. и DATE9. операции
%macro analysis (data_input , m , m_1);
.....
%mend;
В 2 макро переменных м и m_1 являются месяцами, что я хочу, чтобы сравнить. Их формат - MONYY7 (APR2015, MAR2015 ...). Имейте в виду, что я не могу изменить свой data_input (данные моей компании). В начале моей макропрограммы я хочу создать новый набор данных только с наблюдениями & м и & м_1 месяца. Я легко могу это сделать, создав новую переменную даты из DTDSI (real_month для ex), но в формате MONYY7. Тогда я просто выбрать наблюдения, где real_month равно & м или real_month равна & м:
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) прямо в моем первом заявлении?
Спасибо, плохо попробуйте завтра. – buiquanghai
Это не сработает. Если я правильно прочитал, 'dtdsi' - это переменная date, а' & m' - текст, структурированный как 'MONYY7.'. Итак, 'где put (dtdsi, monyy7.) В (" & m "," &m_1"); 'кажется правильным. – Joe
@Joe, uiquanghai Является ли dtdsi текстовой строкой или численным? –