Создание (итеративного?) Цикла Do в SAS
Я знаю, что это просто, но я не могу понять это.
У меня есть набор данных, в котором учится 50 учеников, и один из столбцов называется "Оценка теста", в которой указывается оценка теста для каждого из студентов. Мне нужно пройти и найти разницу между всеми учащимися: студент 1 балл, студент 2 балла, студент 2 балла, студент 3 балла..... до 50, затем студент 2 балла, студент 3 балла,... ученик 2 балл-студент 50 балл.
По сути, мне нужно закончить с матрицей различий для результатов тестов.
Я должен использовать массив, так что это было бы что-то вроде данных: Оценка ученика Алехандро 91 Аткинсин 87 Бил 72 Батлер 94 Коулман 91
data array;
set testscores;
array score(50) Score1-Score 50; ?I dont think this is correct
do i=1 to 50;
difference= score(i) -score(i+1)?? I really have no idea everything I try isn't working
end;
run;
Мне нужно закончить тем, что имеет разницу между баллами каждого ученика
1 ответ
Первый шаг данных генерирует случайные оценки от 1 (а) до 100 (б) после равномерного распределения для 50 студентов.
Затем процедура расстояния вычисляет разницу между оценкой каждого ученика и всех остальных учеников. Чтобы это работало, "Студент" должен быть символьной переменной.
data scores;
a = 1;
b = 100;
do Student_temp = 1 to 50;
Student = compress(put(student_temp, 8.));
u = ranuni(12345);
Score = floor(a + (b-a)*u);
output;
end;
drop Student_temp a b u;
run;
proc distance data=scores out=Diff method=Euclid;
var interval(score);
id Student;
run;