Циклы для обновления выделения - PullRequest
0 голосов
/ 02 июля 2018

У меня есть данные, которые выглядят так:

 Subject  Treatment X 
 1            1     X12
 2            2     X12
 3            3     X13
 4            1     X11
 5            2     X13
 6            3     X12
 7            1     X11
 8            2     X12
 9            1     X11
 10           3     X13

Я должен посчитать количество X, используя переменную Z, так что Z11 = # X11, Z12 = # X12 и т. Д., Но если последнее число в X и T одинаково, то вы добавляете единицу к распределению ,

Таким образом, Z11 = X11 + 1, если T = 1, Z12 = X12 + 1, если T = 2 и Z13 = X13 + 1, если T = 3, но если последнее число и T не соответствуют друг другу, то оно останется то же самое Z11 = X11, Z12 = X12 и Z13 = 13. Я использую proc sql для подсчета выделений, но не могу добавить 1 каждый раз, когда цикл проходит через другую тему.

proc sql;
create table new1 as select 
sum(y="X11")+1 as z11,
sum(y="X12") as z12,
 sum(y="X13") as z13
 from dynamic;
 quit;

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 02 июля 2018

Мне не совсем понятно, что вы хотите, но я бы сделал это на шаге данных, создав необходимые переменные, а затем суммировал итоги.

data have;
input  Subject  Treatment X $;
datalines;
 1            1     X12
 2            2     X12
 3            3     X13
 4            1     X11
 5            2     X13
 6            3     X12
 7            1     X11
 8            2     X12
 9            1     X11
 10           3     X13
;

data have;
set have;
z11 = 0;
z12 = 0;
z13 = 0;
if x="X11" then do;
    z11 = z11 + 1;
    if Treatment=1 then
        z11 = z11+1;
end;
else if x="X12" then do;
    z12 = z12 + 1;
    if Treatment=2 then
        z12 = z12 + 1;
end; 
else if x="X13" then do;
    z13 = z13 + 1;
    if Treatment=3 then
        z13 = z13+1;
end;
run;

proc summary data=have;
var z:;
output out=want sum=;
run;

производит:

                         _TYPE_    _FREQ_    z11    z12    z13

                             0        10       6      6      5

Вы можете удалить переменные _TYPE_ и _FREQ_, если вам нужно.

...