2016-10-26 3 views
1

У меня есть следующий набор данных. Я хочу создать столбец Flag (Score> 50) для каждого ученика, чтобы получить количество объектов с отметками более 50. Я знаю способ сделать это, создав флаг, используя условие if для каждого объекта, а затем добавьте их, но просто любопытно, есть ли лучший способ сделать это в SAS? благодаря!!Подсчет переменных по критериям в SAS

Student_ID,Physics,Maths,Social,English,Chemistry,Flag(Score>50) 
1011,90,90,60,30,20,3 
1012,60,90,30,40,40,2 
1013,30,10,80,70,50,2 
1014,70,10,40,90,90,3 

data score1; 
set score; 
if Physics > 50 then Phy_flag = 1; 
if Maths > 50 then Math_flag=1; 
if Social > 50 then Social_flag=1; 
if English > 50 then Eng_flag=1; 
if Chemistry > 50 then Chem_flag=1; 
Flag_Score_50 = sum(Phy_flag,Math_flag,Social_flag,Eng_flag,Chem_flag); 
run; 

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

ответ

1

Используйте массив для хранения множества различных предметов, то просто петли над массивом, считая значения> 50.

data score1; 
set score; 
array subj[5] Physics Maths Social English Chemistry; 

Flag_Score_50 = 0; 
do i=1 to 5; 
    if subj[i] > 50 then 
     Flag_Score_50 = Flag_Score_50 + 1; 
end; 
drop i; 
run; 
0

Непосредственно использовать сумму:

data have; 
infile cards dlm=','; 
input Student_ID Physics Maths Social English Chemistry; 
flag=sum(Physics > 50,Maths > 50, Social > 50,English > 50,Chemistry > 50); 
cards; 
1011,90,90,60,30,20 
1012,60,90,30,40,40 
1013,30,10,80,70,50 
1014,70,10,40,90,90 
; 
proc print; 
run; 
Смежные вопросы