2015-11-25 3 views
0

Я пытаюсь настроить SAS на то, что я могу сделать в Excel, но не могу найти способ сделать это эффективно. Учитывая первые две таблицы, показанные здесь (названные TREE и LEVEL, соответственно), я пытаюсь в итоге получить третью таблицу (FINAL_TREE).SAS insert column для динамически определенных уровней

Добавление в уровня колонке ДЕРЕВА, так что она становится FINAL_TREE работает следующим образом: любое данное дерево должно иметь ряд Apple,, которая больше или равна Apple_Req для данного уровня, а также Оранжевый больше или равен Orange_Req. Таким образом, Дерево дано Уровень, которому он соответствует всем указанным требованиям.

Таким образом, в примерах таблиц, Tree3 даются Level1, несмотря на то, что было бы легко быть Level3 если не для его низкого Оранжевого кола.

TREE

LEVEL

FINAL_TREE

В Excel это можно сделать с помощью INDEX и нахождение MIN двух функций MATCH, но я не думаю, что могут быть непосредственно переведены на SAS , Я предполагаю, что есть способ установить это с помощью определенных выраженных вложенных инструкций IF, но я надеюсь, что есть решение, которое может обрабатывать таблицу LEVEL с любым количеством уровней (при условии правильной настройки требований).

ответ

2

На самом деле, это немного проще в SAS - отчасти потому, что есть лот различных способов сделать это.

Самый простой, вероятно, использование SQL, если вы знакомы с ним. Наиболее похожее на то, что вы делаете в Excel, - это формат и, возможно, самый быстрый.

proc format; 
    value appleF 
    1-<4 = '1' 
    5-<15 = '2' 
    15-high='3' 
    other='0'; 
value orangeF 
    5-<15 = '1' 
    16-<30 = '2' 
    30-high= '3' 
    other='0'; 
quit; 

Теперь вы можете преобразовать значения с помощью put, а затем использовать min так же, как вы бы в Excel. В основном это заменяет ваш index.

data want; 
    set have; 
    level = min(put(apple,applef1.),put(orange,orangef1.)); 
run; 

Вы также можете произвести формат из набора данных непосредственно - см this paper, например для использования CNTLIN опции на PROC FORMAT.

Смежные вопросы