У меня есть набор данных, который в настоящее время содержит информацию о студентах по семестрам (т.е. 201610, 201620, 201630, 201640, 201710 и т. Д.) С суффиксом 10 = осень, 20 = зима, 30 = весна и 40 = лето , Не все термины обязательно указаны для каждого студента.
То, что я хотел бы сделать, - это определить первый семестр, в который был зачислен студент, предположительно осень, как T1, а последующие термины как T2, T3 и т. Д. Так как некоторые студенты могут брать зимний летний семестр, я бы хотел бы идентифицировать их как T1_Winter, T2_Summer и т. д.
Я смог выделить отдельные термины, на которые записался студент, и смог определить первый, промежуточный и последний термины как 1, 2, 3 и т. Д. Однако я не могу управлять обернуть голову, как определить осень и весну как 1, 2, 3, 4 и промежуточные термины, зима и лето, и 1,5, 2,5, 3,5, 4,5 и т. д.
# Create the sample dataset
data <- data.frame(
ID = c(1, 1, 1, 2, 2, 2, 2),
RegTerm = c(201810, 201820, 201830, 201910, 201930, 201940, 202010))
)
# Isolate student IDs and terms
stdTerm <- subset(data, select = c("ID","RegTerm"))
# Sort according to ID and RegTerm
stdTerm <- stdTerm[
with(stdTerm, order(ID, RegTerm)),
]
# Remove duplicate combinations of ID and term
y <- stdTerm[!duplicated(stdTerm[c(1,2)]),]
# Create an index to identify the term number
# for which a student enrolled
library(dplyr)
z <- y %>%
arrange(ID, RegTerm) %>%
group_by(ID) %>%
mutate(StdTermIndex = seq(n()))
Прямо сейчас, это идентифицирует последовательность всех терминов для студента как 1, 2, 3 и т. Д., Но не зима и лето как промежуточные термины. То есть, если студент зачислен осенью и зимой, зима будет отображаться как 2, а весна будет отображаться как 3.
В предоставленных примерах данных я хотел бы, чтобы идентификатор студента 1 отображал 201810 как 1, 201820 как 1,5 и 201830 как 2 и т. Д. Любые предложения или предыдущий код, на которые я мог бы сослаться, обернутся вокруг того, как я могу кодировать промежуточные семестры?