Я хочу импортировать данные и привести их в порядок. Я добился некоторых результатов, которые хочу получить, используя функции в Excel, но это утомительно и должно быть переделано вручную каждый раз, когда я получаю новый файл Excel с обновленными данными. У меня есть файл Excel с отдельными рабочими листами для каждого периода времени. Этот файл Excel обновляется несколько раз в год, сохраняя тот же стиль, но добавляя дополнительные данные, в том числе добавляя дополнительные таблицы периодов времени. Каждый лист имеет следующий формат:
Student_ID| Major_ID | Gender | Age | Semester_Registered | Marital_Status | Home_State
20130001 | 10022 | M | 22 | 3 | S | AZ
20130002 | 10022 | F | 23 | 5 | M | CA
20140001 | 10022 | M | 21 | 3 | M | CA
20140004 | 10034 | F | 24 | 4 | S | AZ
Это будет пример для первых нескольких записей заданного периода времени, скажем, 2016_Semester_1. Идентификатор студента присваивается студенту при регистрации в классах и служит уникальным идентификатором Major_ID соответствует таблице с Major_ID и Major_Name и кампусом. Коды остаются одинаковыми для каждого листа, но учащийся может сменить специализацию или кампус, поэтому Major_ID может отличаться для каждого учащегося в зависимости от периода времени. Пол и возраст говорят сами за себя. Semester_Registered - это число от 1 до 8. Когда учащийся впервые регистрируется для занятий, он находится в Semester_Registered 1, затем во втором семестре первого года обучения он должен перейти на 2, а в первом семестре второго курса - в 3. , вплоть до 8 во втором семестре их старшего года. Тем не менее, некоторые студенты не проходят последовательность семестров с нормальной скоростью, например, если им приходится повторять семестр из-за неудачных курсов или если им нужно на время покинуть университет, чтобы заработать больше денег, прежде чем вернуться позже и продолжаю учебу. Marital_Status - это S для одиноких, M для женатых, D для разведенных или W для вдовцов. Home_State - это двухбуквенное аббревиатура для штата США, из которого происходит студент, в основном, необходим для того, чтобы увидеть, соответствует ли студент уровню обучения в штатах, но также полезно для отчетов, чтобы узнать, откуда приезжает большинство студентов, чтобы сосредоточить маркетинговые действия на этих штатах.
Книга Excel, которая у меня есть, содержит таблицу для каждого учебного семестра с 2014_1 по 2019_1. Я хочу объединить данные и привести их в порядок двумя основными способами. Во-первых, я хочу создать новые таблицы для каждого класса Freshman, включая только те, которые были в Semester_Registered 1 в семестре 2014_1 в одной таблице, в семестре 2015_1 в другой таблице, вплоть до 2019_1. Заголовки данных, которые я хочу в этих таблицах, выглядят так:
First_Semester | Student_ID | Major_ID_Start | Gender | Age_Start | Marital_Status_Start | Final_Semester_Time | Final_Semester_Registered | Graduated_On_Time | Graduated_Late | Major_ID_End | Age_End | Marital_Status_End | Still_Enrolled
Все записи в данной таблице будут иметь одинаковое значение First_Semester, например, 2014_1 или 2015_1. Student_ID является идентификатором. Maojor_ID_Start - это Major_ID, который был у студента в First_Semester. Пол, вероятно, можно получить только один раз из First_Semester. Age_Start и Marital_Status_Start - их соответствующие значения, перечисленные в First_Semester. Final_Semester_Registered должен просматривать каждый лист периода времени, пока не обнаружит, что указанный Student_ID больше не отображается в списке зарегистрированных студентов; для выпускников это должен быть период времени, когда Semester_Registered равен 8, но некоторые учащиеся выбывают до окончания учебного заведения, так что это показывает, в какой период времени они были зарегистрированы в последний раз перед отсевом. Final_Semester_Registered показывает значение Semester_Registered в Final_Semester_Time, которое должно быть равно 8, если студент закончил учебу, но если нет, то покажет, насколько далеко ученик продвинулся в своих исследованиях до отсева. Graduated_On_Time имеет значение true или false, верно, если студент появляется с Semester_Registered 8 ровно через 4 года после года First_Semester, например, студент, который закончил свой первый год в 2014_1 и окончил его в конце 2018_2. Graduated_Late также имеет значение true или false и верно, если студент достиг Semester_Registered 8 в какой-то момент через 4 года после года First_Semester. Major_ID_End показывает последний зарегистрированный Major_ID за последний семестр, который данный Student_ID показывает в списке зарегистрированных студентов, и его полезно сравнить с Major_ID_Start, чтобы увидеть, изменился ли студент по основным предметам. Age_End и Marital_Status_End зарегистрировали свои соответствующие значения в период времени Final_Semester_Time. Still_Enrolled имеет значение true или false, и это правда, если Student_ID все еще присутствует в рабочем листе последнего периода времени, в настоящее время это будет 2019_1, но было бы идеально иметь это обновление в будущем, чтобы использовать последний лист периода времени, включенный в данные (поскольку, например, через несколько месяцев мы добавим новые данные, которые будут включать 2019_2).
Во-вторых, я хочу таблицу, просто показывающую Student_ID студентов, которые больше не зарегистрированы в последний период времени. Это будет иметь заголовки столбцов следующим образом:
First_Semester | Student_ID | Major_ID_Start | Gender | Age_Start | Marital_Status_Start | Final_Semester_Time | Final_Semester_Registered | Graduated_On_Time | Graduated_Late | Dropped_Out | Major_ID_End | Age_End | Marital_Status_End
Столбцы такие же, как и в другом примере, за исключением Dropped_Out, который имеет значение true или false, и это правда, если студент имеет значение Final_Semester_Registered меньше 8. Ключевым моментом здесь является то, что эта таблица должна включать только те Student_ID, где Still_Enrolled имеет значение false и служит консолидированным списком всех студентов, которые когда-то были зачислены в университет, но больше не зачислены, что позволяет проводить анализ между теми, кто закончил вовремя, кто закончил поздно, и теми, кто бросил учебу.
Некоторые из этих результатов я добился с помощью Excel, но это затянувшийся и ручной процесс, который необходимо выполнять каждый раз при обновлении файла данных. Excel также стал довольно медленно загружать файл и обновлять вычисления формул, поэтому я хотел бы перенести это в статистическое программное обеспечение. Для справки, однако, вот некоторые формулы, которые я использовал в Excel, чтобы дать представление о том, что может быть адаптировано в r.
У меня есть консолидированная таблица с каждым Student_ID в виде строки, которая включает в себя такие столбцы, как:
Student_ID | Major_ID_2014_1 | Major_ID_2014_2 | Major_ID_2015_1 | Semester_Registered_2014_1 | Semester_Registered_2014_2 | Semester_Registered_2014_2 | Final_Semester_Time | Final_Semester_Registered | Age_Start | Age_End
Это сокращенно, поскольку оно включает столбцы Major_Id и Semester_Registered с 2014_1 по 2019_1, но здесь в моем примере я просто показываю до 2015_1, чтобы дать идею.Формула для Major_ID_2041_1 имеет вид = IFERROR (INDEX (Semester_2014_1, MATCH (Student_ID_Cell, Student_IDs_2014_1,0)), ""), где Semester_2014_1 и Student_IDs_2014_1 имеют именованные диапазоны из рабочего листа периода времени 2014_1, включая соответствующие строки. Аналогичная формула использует другой именованный набор данных для строк, связанных с Semester_Registered. Затем я могу использовать что-то вроде = IF (SUMPRODUCT (1 / COUNTIF (F3: R3, F3: R3)) <3, FALSE, TRUE) в диапазоне ячеек для Major_ID от 2014_1 до 2019_1 (каждый в своем собственном столбце) для посмотрите, изменился ли Major_ID (имеется в виду, что студент изменил основные предметы или изменил кампус), и я могу использовать формулу MAX () для диапазона столбцов для Semester_Registered, чтобы найти самый высокий семестр, который достиг студент. Формула типа = LOOKUP (2,1 / (V3: AH3 <> ""), $ V $ 2: $ AH $ 2), которая охватывает тот же диапазон столбцов для Seester_Registered, где вторая строка имеет заголовок, такой как 2014_1, 2014_2, и т. д. возвращает последний столбец, который не является пустым (таким образом, последний столбец, в котором зарегистрирован студент). Затем это можно использовать с функцией INDIRECT () для ссылки на именованный набор данных (мне пришлось вручную называть все наборы данных на каждом листе по периодам времени), например = IFERROR (INDEX (INDIRECT (CONCATENATE ("DATA_", AK3)), MATCH (T3, INDIRECT (CONCATENATE ("Student_IDs _", AK3)), 0), 4), ""), где AK3 содержит Final_Semester_Time, например, 2014_1.