SAS中的列联表

时间:2013-05-03 15:45:57

标签: sas

我为一些学生提供了2年的考试成绩数据。我有一年的专栏,学生的名字和标记。有些学生在第二年没有出现,因为他们在第二年没有参加任何考试。我想表明学生的表现是否持续,或者他们后来的表现是否有任何模式。我可以将数据分成相同大小的两半,以考虑“前半部分”和“后半部分”标记。我也可以根据考试成绩使用'proc rank'

将前半部分分为五分之一

我知道我想要的输出是一张5×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;

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

我会保留得分,然后用

制作一个散点图
PROC SGPLOT data = dataset;
 x = year1;
 y = year2;
 loess x = year1 y = year2;
run;

答案 1 :(得分: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;