0

我有一些学生 2 年的考试成绩数据。我有一列有年份、学生姓名和分数。有些学生在第二年没有出现,因为他们在第二年没有参加任何考试。我想展示学生的表现是否持续存在,或者他们随后的表现是否有任何模式。我可以将数据分成大小相等的两半,以说明“前半部分”和“后半部分”标记。我还可以使用“proc rank”根据考试结果将前半部分分成五分之一

我知道我想要的输出是一个 5 X 5 表,它在一个轴上具有原始的 5 个五分位数,随后的 5 个五分位数加上一个“退出”类别,因此是一个 5 x 6 矩阵。在第一次考试中,每个五分之一的学生总数显然会占总人数的 20% 左右,如果没有关系,则在随后的 6 个类别中应该各占 16.67%。但我不知道如何继续证明这是否是没有这些数据的情况。

请问如何在 SAS 中执行此操作?有人可以指点我一个很好的教程来展示如何设置它吗?我一直在寻找诸如“性能持久性”等术语,但无济于事。. .

我一直在这样设置我的数据集。我使用下面的第一个过程为数据的前半部分或后半部分添加了一个包含 0 或 1 的列。我还为所有学生的分数添加了一个五分位数排名的列。但我认为我走错了路。我不应该将数据分成每半个五分位数,而不是整个两个时期吗?

Proc rank groups=2;
      var yearquarter;
 ranks ExamRank;
run;

Proc rank groups=5;
      var percentageResult;
      ranks PerformanceRank;
run;

提前致谢。

4

2 回答 2

1

为什么要将数据分成五分位数?

我会保持分数不变,然后用

PROC SGPLOT data = dataset;
 x = year1;
 y = year2;
 loess x = year1 y = year2;
run;
于 2013-05-04T20:22:07.297 回答
0

这是简单制表的一个相当基本的示例。我转置你的五分位数据,然后制作一个表格。这里基本上没有关系,除了我只允许 5% DNF 所以你有更像 19% 19% 19% 19% 19% 5%。

data have;
do i = 1 to 10000;
  do year = 1 to 2;
    if year=2 and ranuni(7) < 0.05 then call missing(quintile);
    else quintile = ceil(5*ranuni(7));
    output;
  end;
end;
run;

proc transpose data=have prefix=year out=have_t;
by i;
var quintile;
id year;
run;


proc tabulate data=have_t missing;
class year1 year2;
tables year1,year2*rowpctn;
run;

PROC CORRESP 可能对分析有所帮助,尽管它看起来并不完全符合您的要求。

proc corresp data=have_t outc=want outf=want2 missing;
tables year1,year2;
run;
于 2013-05-03T15:58:46.753 回答