Я довольно новичок в SAS и ищу небольшое руководство. У меня есть две таблицы. Один из них содержит мои данные (что-то вроде ниже, хотя и гораздо больше):Определение переменных в одной таблице на основе значений в другой таблице
Data DataTable;
Input Var001 $ Var002;
Datalines;
000 050
063 052
015 017
997 035;
run;
Мои переменные являются целыми числами (читай в виде текста) от 000 до 999. Там может быть несколько, как два, или больше, чем 500 в зависимости от того, что делает пользователь.
Вторая таблица содержит указания пользовательских группировки переменных в DataTable:
Data Var_Groupings;
input var $ range $ Group_Desc $;
Datalines;
001 025 0-25
001 075 26-75
001 999 76-999
002 030 0-30
002 050 31-50
002 060 51-60
002 999 61-999;
run;
(В действительности, эта таблица в регулируется пользователем в Excel, а затем импортировать, но это будет работать для целей исправление проблем).
Переменная «var» в таблице var_groupings соответствует столбцу var в DataTable. Так, например, «var» 001 в таблице var_groupings говорит, что эта группировка будет на var001 в DataTable.
переменная «Диапазон» указывает верхнюю границу группировки. Поэтому, рассматривая диапазоны в таблице var_grouping, где var равно 001, пользователь хочет, чтобы первая группа занимала от 0 до 25, вторая группа - от 26 до 75, а последняя группа - от 76 до 999.
EDIT: столбец Group_Desc может содержать любую строку и необязательно представлен в форме, представленной здесь.
финальный стол должен выглядеть примерно так:
Var001 Var002 Var001_Group Var002_group
000 050 0-25 31-50
063 052 26-75 51-60
015 017 0-25 0-30
997 035 76-999 31-50
Я не знаю, как я бы даже приблизиться к что-то вроде этого. Любое руководство, которое вы можете дать, было бы весьма полезно.
Спасибо за помощь Дмитрия. Я ценю это. Тем не менее, я получаю следующую ошибку. 'ПРИМЕЧАНИЕ: CALL EXECUTE сгенерированная строка. 1 + proc format library = work cntlin = formatset (где = (var = '002')); ОШИБКА: этот диапазон повторяется или значения перекрываются: .- .. 1 + run; ' – ApeWithPants
Вы используете точно такой же набор данных Var_Groupings, что в вашем вопросе? Поскольку ошибка означает, что для переменной 002 в этом наборе данных есть перекрывающиеся диапазоны. Но в этом наборе данных нет совпадений (и код работал правильно для меня). –
Проблема заключается в том, что вы определяете форматы. В таблице форматов отсутствуют значения для начала и конца столбцов. Если посмотреть на это, вероятно, это связано с тем, что в моей реальной таблице Var_Groupings столбец Group_Desc может быть любой строкой, а не обязательно формой (ddd-ddd). Прошу прощения, что я не был откровенен в этом отношении. – ApeWithPants