У меня есть таблица, которая содержит информацию, которая, конечно же, выбрана в 2 семестра каждого учащегося. Те студенты, не проверяли свой первый семестр, так что все valid_or_not_of_semester='N'
для semester='1st'
:SAS proc freq для отличного значения переменной
student semester course_selected valid_or_not_of_semester
A 1st math N
A 1st english N
A 2nd math Y
A 2nd english Y
B 1st math N
B 2nd math Y
B 2nd english Y
C 1st math N
C 2nd math N
Для тех студентов, которые выбрали math
(или english
) в первом семестре, я хочу исследовать, если они выбрали math
(или english
) во втором семестре, если да, то я собираюсь создать перекрестную табуляцию, который подсчитывает количество тех студентов, которые проверенными или не свой второй семестр:
--------------------------------------------------------------------------
1st semester \ 2nd semester | Math | English
invalid \ |---------------------|--------------------
students \ | valid | invalid | valid | invalid
--------------------------------------------------------------------------
Math | 2 | 1 | 2 | 0
--------------------------------------------------------------------------
English | 1 | 0 | 1 | 0
--------------------------------------------------------------------------
Каждая строка обозначает числа студентов, которые не подтвердило первый семестр и выбрал курс в первом семестре. И столбцы разделяют студентов, которые выбрали курс действительным и недействительным своего второго семестра. Чтобы быть более точным,
--------------------------------------------------------------------------
1st semester \ 2nd semester | Math | English
invalid \ |---------------------|--------------------
students \ | valid | invalid | valid | invalid
--------------------------------------------------------------------------
Math | 2 | 1 | 2 | 0
| | |
\/ \/ \/
(students A&B) (student C) (students A&B)
Я попытался ргос SQL:
data math;
merge have
have (where=(semester='1st') in=these);
by student;
if these then output;
run;
proc sql;
create table result as
select count(distinct student) as nb_student
from math (where=(semester='2nd'))
group by course_selected, valid_or_not_of_semester;
quit;
И сделать то же самое для english
.
Но есть ли способ получить результат 2 курсов напрямую? Как я могу использовать proc freq?
Надеюсь получить ваш ответ.