2013-09-11 2 views
0

У меня есть набор данных с тремя столбцами: Имена, ColA и ColB. Там это количество строк для каждого имени, и для каждого имени, мне нужно вычесть из А, и сделать новый столбец получить остаточную стоимость differece между А и В:Простой расчет SAS

Names ColA ColB NewColA 
    x  100  5  95 
    x  100  20  75 
    x  100  10  65 

Возможно ли это? Я пробовал использовать инструкции IF-Then, Do-While и считал макрос, но моя голова все еще застряла в режиме Excel/VBA, поэтому я не уверен, как это сделать?

ответ

2

Ваш вопрос очень похож на выполнение общей суммы с помощью группировки. Пример этого можно найти здесь: http://support.sas.com/kb/24/649.html

Секрет использует «первые» неявные переменные.

data out; 
    set [replace with your input dataset]; 
    by names; 
    retain newColA; 
    if first.names then newcola=cola; 
    newcola = newcola - colb; 
run; 

[править] Я забыл сохранить заявление. Здесь приведен пример использования набора данных рыбы из sashelp. (Хотя это не имеет смысла делать это.)

Прежде всего, набор данных должен быть отсортирован. Если вы уже находитесь, вы можете перейти прямо к этапу данных.

proc sort data = sashelp.fish(where=(Weight ne .) drop=Length1-Length3) out = fish nodupkey force; 
    by species weight height; 
run; 

data out; 
    set fish; 
    by species; 
    retain newColA; 
    if first.species then newColA = weight; 
    newColA = newColA - height; 
run; 
+0

Проблема с методом «первый» заключается в том, что он объединяет мои данные вместе. Мне нужно, чтобы все строки оставались в моем наборе данных, добавляя только один столбец с расчетом. – NHansen

+0

добавьте 'keep NewColA;' к вышесказанному. – DomPazz

+0

@ пользователь2754574. «Первый» не группирует данные. Ссылка, которую я разместил, делает это с дополнительной проверкой «если» на «последний» для вывода. Вот как он группирует данные, без вывода всех строк. –

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