Использование SAS EG для получения процентов - PullRequest
0 голосов
/ 03 мая 2018

Надеюсь, это относительно простой вопрос для кого-то, кто сможет мне помочь. Я новичок в SAS (и программирование). У меня есть набор данных, который имеет множество переменных, каждый раз измеряя время, затраченное на различные виды деятельности, с прибл. 18 000 уникальных записей. Мне нужно получить процент, который каждая из этих переменных вносит в общее количество затраченного времени. Я знаю, как это сделать, а не как заставить SAS делать это. Снимок экрана с некоторыми из приведенных ниже переменных вместе с итогом справа. Пожалуйста, дайте мне знать, если вам нужно что-нибудь еще

скриншот переменных

Спасибо вам, DomPazz и momo1644, за эти решения. Они оба помогают мне понять SAS. Тем не менее, учитывая, что оба ваших решения охватывали выполнение этого построчно, мне явно неясно, чего я на самом деле пытаюсь достичь. Я пытаюсь получить сумму для каждой из переменных, а затем найти процент, который эта сумма вносит в общую сумму. Если бы я делал это «вручную», это было бы v1_total / total-total * 100 / 1.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

В SAS Enterprise Guide вы можете сделать это:

  • Написание кода
  • Или с помощью построителя запросов (наведите и щелкните)

Вариант 1: SASCode

data have;
input id $ v1 v2 v3 v4 v5 total;
datalines;
A 1 2 3 4 5 15
B 1 2 3 4 10 20
C 0 0 0 0 15 15
D 1 0 1 0 2 4
;
RUN;
DATA want1;
set have;
v1pcnt=v1/total;
v2pcnt=v2/total;
v3pcnt=v3/total;
v4pcnt=v4/total;
v5pcnt=v5/total;
format v1pcnt percent10.2 v2pcnt percent10.2 v3pcnt percent10.2 v4pcnt percent10.2 v5pcnt percent10.2;
drop v1 v2 v3 v4 v5;
run;

Вариант 2: EG Query Builder

  • Щелкните правой кнопкой мыши по исходной таблице и выберите «Построитель запросов»

  • Нажмите на вычисляемое поле, чтобы создать новое поле для каждой из ваших переменных Step2

  • Выберите расширенное выражение и вставьте код из опции 1 для каждой переменной: v1/total

  • Нажмите «Далее» и укажите имя столбца «v2pcnt» и формат «процент10.2». Step3

  • Нажмите «Готово» и повторите шаги для других переменных, когда будете готовы, нажмите «Выполнить», и таблица будет создана.

step4

0 голосов
/ 03 мая 2018

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

data want;
set have;
var1 = var1 / total;
var2 = var2 / total;
/*repeat as needed*/
run;

Замените var1, var2, total фактическими именами переменных.

Шаг данных SAS действует для каждой записи в наборе данных. У него есть неявный цикл для всех записей. Итак, вы пишете нужную формулу, и она выполняет ее по всей таблице.

Если вы хотите новые значения для процентов, то код аналогичен:

data want;
set have;
var1_p = var1 / total;
var2_p = var2 / total;
/*repeat as needed*/
run;

Здесь вместо обновления значения в var1 мы создаем новую переменную var1_p для хранения процента.

...