[每个科目的计数值

问题描述 投票:0回答:1

我想向名为COUNT的数据集添加新列。我的数据集有一个变量主题tox1tox2tox3(字符变量),具有不同的值。一个主题可以在我的数据集中出现多次,我想计算每个主题'ADR'的出现。我想做的是创建一个名为COUNT的新变量,该变量计算对象具有特定值的次数,即'ADR'tox1tox2的特定值;当SUBJECT没有观察到该特定值时,我希望tox3的结果为零。

这是我想要的数据集的一个示例(在此示例中,我想将每个COUNT"ADR"的每个实例都计为SUBJECT。]

COUNT

INPUT subject $ tox1 $ tox2 $ tox3 $; datalines; 1 ADR c s 1 ADR d f 1 s ADR f 1 a w e 2 d f g 3 e d ADR 3 k ADR f 4 N ADR ADR 4 Q ADR d 4 ADR d f 4 r v h 4 ADR f g 5 g f d 5 r t u 5 g h j ;

THIS IS INPUT DATASET

SUBJECT TOX1 TOX2 TOX3 COUNT 1 ADR c s 3 1 ADR d f 3 1 s ADR f 3 1 a w e 3 2 d f g 0 3 e d ADR 2 3 k ADR f 2 4 N ADR ADR 5 4 Q ADR d 5 4 ADR d f 5 4 r v h 5 4 ADR f g 5 5 g f d 0 5 r t u 0 5 g h j 0

sas sas-macro
1个回答
0
投票

这里是数据步骤方法

THIS IS THE REQUIRED OUTPUT FOR COUNT VARIABLE

结果:

data have;
INPUT subject $ tox1 $ tox2 $ tox3 $; 
datalines; 
1 ADR c   s   
1 ADR d   f   
1 s   ADR f   
1 a   w   e   
2 d   f   g   
3 e   d   ADR 
3 k   ADR f   
4 N   ADR ADR 
4 Q   ADR d   
4 ADR d   f   
4 r   v   h   
4 ADR f   g   
5 g   f   d   
5 r   t   u   
5 g   h   j   
;

data want (drop = i);
   count = 0;
   do _N_ = 1 by 1 until (last.subject);
      set have;
      by subject;
      array tox {3};
      do i = 1 to dim(tox);
         if tox [i] = 'ADR' then count = sum(count, 1);
      end;
   end;
   do _N_ = 1 to _N_;
      set have;
      output;
   end;
run;
© www.soinside.com 2019 - 2024. All rights reserved.