我知道这很简单,但我似乎无法弄明白。
我有一个有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;
我需要最终得到每个学生分数之间存在差异的东西
答案 0 :(得分:0)
第一个数据步骤在50名学生的统一分布之后产生1(a)和100(b)之间的随机分数。
然后,proc距离计算每个学生与所有其他学生的分数之间的差异。为此,“学生”应该是一个字符变量。
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;