每个主题的计数值
counting values per subject
我想向名为 COUNT
的数据集添加一个新列。我的数据集有一个变量主题, tox1
, tox2
, tox3
(字符变量)具有不同的值。一个主题可以在我的数据集中出现多次,我想计算每个主题 'ADR'
的出现次数。我想要做的是创建一个名为 COUNT
的新变量,它计算一个主题具有特定值的次数,即 'ADR'
代表 tox1
、tox2
和 tox3
;当 SUBJECT 没有对该特定值的观察时,我希望 COUNT
的结果为零。
这是我想要的数据集示例(在此示例中,我想将每个 SUBJECT
的 "ADR"
的每个实例都计算为 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
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;
结果:
count subject tox1 tox2 tox3
3 1 ADR c s
3 1 ADR d f
3 1 s ADR f
3 1 a w e
0 2 d f g
2 3 e d ADR
2 3 k ADR f
5 4 N ADR ADR
5 4 Q ADR d
5 4 ADR d f
5 4 r v h
5 4 ADR f g
0 5 g f d
0 5 r t u
0 5 g h j
我想向名为 COUNT
的数据集添加一个新列。我的数据集有一个变量主题, tox1
, tox2
, tox3
(字符变量)具有不同的值。一个主题可以在我的数据集中出现多次,我想计算每个主题 'ADR'
的出现次数。我想要做的是创建一个名为 COUNT
的新变量,它计算一个主题具有特定值的次数,即 'ADR'
代表 tox1
、tox2
和 tox3
;当 SUBJECT 没有对该特定值的观察时,我希望 COUNT
的结果为零。
这是我想要的数据集示例(在此示例中,我想将每个 SUBJECT
的 "ADR"
的每个实例都计算为 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
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;
结果:
count subject tox1 tox2 tox3
3 1 ADR c s
3 1 ADR d f
3 1 s ADR f
3 1 a w e
0 2 d f g
2 3 e d ADR
2 3 k ADR f
5 4 N ADR ADR
5 4 Q ADR d
5 4 ADR d f
5 4 r v h
5 4 ADR f g
0 5 g f d
0 5 r t u
0 5 g h j