Мне нужно будет создать ряд справочных таблиц, в которых я укажу количество академических c кредитов, которые студент должен получить, учитывая определенную программу и период времени.
У меня есть список дат начала и программ для каждого отдельного студента во фрейме данных «fulldata». В качестве первого шага я хочу использовать этот фрейм данных, чтобы получить список уникальных дат начала для определенной программы. В идеале я мог бы автоматизировать этот (и более поздний) этап (ы) с помощью функции, поскольку существует много программ.
В настоящее время у меня есть три программы: экономика (Ekonomi), недвижимость и цифровая СМИ. У меня есть три соответствующих R-объекта (содержащих вектор академических c кредитов для каждого модуля по порядку) с именами «Экономи», «Недвижимость» и «Цифровые медиа». Я хочу получить уникальные значения start_date из «fulldata», где имя программы равно имени моего текущего объекта R
Я пишу:
start_dates<-function(x){
sd<-fulldata%>%filter(program==deparse(substitute(x)))%>%
dplyr::select(UTBILDNINGSTILLFALLE_STARTDATUM)%>%drop_na()%>%unique()
}
Так что для start_dates(Ekonomi)
функция следует выбрать даты начала наблюдений с программой, равной «Экономи». Это, похоже, не работает, однако.
Когда я пишу
start_dates(Ekonomi)
sd
Оказывается, что sd не содержит никаких наблюдений.
Я могу написать:
sd<-fulldata%>%filter(program==deparse(substitute(Ekonomi)))%>%
dplyr::select(UTBILDNINGSTILLFALLE_STARTDATUM)%>%drop_na()%>%unique()
}
.. ... а потом sd оказывается вполне нормально, но я не могу сделать то же самое с функцией.
Что я делаю не так и как я могу заставить эту работу работать?
Small exerpt of data:
structure(list(UTBILDNINGSTILLFALLE_STARTDATUM = structure(c(15586,
15586, 15586, 15586, 15586, 15586, 15586, 15586, NA, 15586, 15586,
NA, 15586, 15586, 15586, NA, 15586, 15586, 15586, 15586), class = "Date"),
program = c("Ekonom", "Mäklarekonom", "Ekonom", "Mäklarekonom",
"Ekonom", "Ekonom", "Ekonom", "Ekonom", "Mäklarekonom", "Ekonom",
"Ekonom", "Mäklarekonom", "Ekonom", "Ekonom", "Mäklarekonom",
"Mäklarekonom", "Ekonom", "Ekonom", "Mäklarekonom", "Mäklarekonom"
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-20L))