Создание (итеративного?) Цикла 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;
Другие вопросы по тегам