У меня есть датафрейм студентов, назовем его StudentDF
, как показано ниже.Он включает информацию о студентах с ID
, semester
, subject
и их final_status
.Я хочу посчитать количество переходов, происходящих от предмета к другому предмету в последующем семестре для каждого учащегося.
StudentDF<-data.frame(ID=c(1,1,1,2,2,2,2,2,2,3,3,4),Semester=c(1,2,3,1,1,2,2,3,3,1,2,1),Subject=c('Math01-pass','Math02-fail','Math02-Pass','Math01-fail','Phys01-fail','Math01-fail','Phys01-fail','Math01-Pass','Math02-fail','Math01-Pass','Math02-Pass','Math01-fail'),
Final_status=c('Graduate','Graduate','Graduate','Dropped-out','Dropped-out','Dropped-out','Dropped-out','Dropped-out','Dropped-out','Graduate','Graduate','Dropped-out'
))
StudentDF:
ID Semester Subject Final_status
1 1 Math01-pass Graduate
1 2 Math02-fail Graduate
1 3 Math02-Pass Graduate
2 1 Math01-fail Dropped-out
2 1 Phys01-fail Dropped-out
2 2 Math01-fail Dropped-out
2 2 Phys01-fail Dropped-out
2 3 Math01-Pass Dropped-out
2 3 Math02-fail Dropped-out
3 1 Math01-Pass Graduate
3 2 Math02-Pass Graduate
4 1 Math01-fail Dropped-out
Давайте определим переход.переход указывает, что какой предмет следует за другим предметом в следующем семестре.Если семестр последний семестр (для каждого идентификатора), Final_status
будет считаться последним переходом.
transtion_matrix
должен отображать все возможные переходы между subject
с.Freq
столбец показывает количество (частоту) переходов.Например, учащиеся с ID
с 1 и 2 взяли subject
Math01-pass
, а затем в следующем семестре изучили предмет Math02-fail
.Следовательно, в этом переходе Freq
будет равен 2, что говорит о том, что у нас есть 2 студента, у которых есть такой переход.
Transition_Matrix: (the result)
From To Freq
Math01-fail Math01-fail 1
Math01-fail Math01-pass 1
Math01-Pass Math02-fail 2
Phys01-fail Phys01-fail 1
Math01-fail Dropped-out 2
Phys01-fail Dropped-out 1
Math02-Pass Graduate 2
Последний переход связывает последний семестр студентов с Final_status
.Например, StudentDF$ID==2
в его последнем семестре заняло Phys01-Pass
.Итак, у нас есть 1 переход Phys01-fail
к Dropped-out
.
Пожалуйста, помогите мне реализовать его в R.