Подсчет переменных и отслеживание изменений - PullRequest
0 голосов
/ 05 мая 2020

У меня есть список студентов, и мне нужно узнать, сколько из них переведено в другой колледж.

Первая запись представляет "домашнюю школу" студента, если запись в колледж остается неизменной для всех семестров, значит, студент не переводился. Если в течение одного из семестров колледж другой, студент переводился. Я бы хотел, чтобы Transfer был задан как дихотомическая переменная (0,1).

Вот мои пробные данные.

Semester <-c(1,2,3,4,5,1,2,3,4,1,2,3,4,5,1,2,3,1,2,1,2,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,1,2,3,4)
Student <- rep(c("A","B","C","D","E","F","G","H","I","J"),c(5,4,5,3,2,2,5,6,4,4))
College <- rep(c("ATC","CCTC","DTC","FDTC","GTC","HGTC","MTC","NETC"),c(5,6,4,5,6,4,5,5))
test.dat1 <- cbind(Semester,Student, College)

Мне нужно создать таблицу, которая выглядит следующим образом: -

Table

Ваша помощь очень ценится!

1 Ответ

1 голос
/ 05 мая 2020

Будет group_by каждый ученик, а затем считать, что домашняя школа будет первым колледжем для этого ученика.

В столбце передачи будет числовое c логическое значение того, является ли домашняя школа и новая школы разные.

Редактировать : Новая школа - это первая школа, в которой учатся, отличная от домашней школы, если посещается несколько колледжей.

library(tidyverse)

test.dat1 %>%
  as.data.frame() %>%
  group_by(Student) %>%
  summarise(Home_School = first(College),
            New_School = if_else(n_distinct(College) > 1, first(College[College != first(College)]), Home_School),
            Transfer = +(Home_School != New_School))

Выход

# A tibble: 10 x 4
   Student Home_School New_School Transfer
   <fct>   <fct>       <fct>         <int>
 1 A       ATC         ATC               0
 2 B       CCTC        CCTC              0
 3 C       CCTC        DTC               1
 4 D       DTC         FDTC              1
 5 E       FDTC        FDTC              0
 6 F       FDTC        GTC               1
 7 G       GTC         GTC               0
 8 H       HGTC        MTC               1
 9 I       MTC         NETC              1
10 J       NETC        NETC              0
...