HW3 // Датафреймы. Исследование данных

Основные задания

Заметка

Описание данных

Сегодня мы работаем с данными опросника Тёмная дюжина (Dirty Dozen), которые собирались в одном из офлайн-исследований. Так как данные были собраны на разных компьютерах, несколько файлов были объединены в архив.

Тёмная дюжина — это опросник на Темную триаду из двенадцати пунктов. Данные содержат ответы респондентов на эти пункты (q1q12), идентификатор респондента (id) и дату, когда опросник был заполнен (date).

#1

Скачайте архив с данными и разархивируйте его в проект курса, который мы создали на практическом занятии. В папке проекта должна появиться папка hw3. Мы будем работать с ней.

Сколько всего файлов содержится в папке hw3? Выведете число файлов с помощью кода.

Для самопроверки введите количество файлов в папке.

Подсказки
Как делать задание?
  • Необходимо вывести названия файлов, содержащихся в папке hw3 в виде вектора
  • И далее определить длину (количество элементов) этого вектора
Что надо сделать?
  • Выведите названия файлов, содержащихся в папке hw3, с помощью функции dir()
  • Функция вернет вектор названий файлов
  • Определите длину (количество элементов) этого вектора с помощью функции length()
Код падает с ошибкой
  • Проверьте, что вы разархивировали скачанный архив в папку проекта
  • Проверьте, что вы работаете в проекте
  • Проверьте, что вы не опечатались в названии папки

#2

Данные собирались на одном и том же программном обеспечении, поэтому структура файлов одинакова. Возьмите первый датасет set1.csv из папки с данными и загрузите его в переменную set1.

Для самопроверки в поле ниже введите число строк в датасете.

#3

Проверьте структуру полученного датафрейма. Выведите типы данных всех переменные и первые несколько значений каждой из них с помощью одной команды.

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

Подсказки
Как делать задание?
  • Выведете структуру датафрейма
  • Посмотрите, переменных какого типа больше всего
Что надо сделать?
  • С помощью функции str() вывести структуру датафрейма
  • Функция вернет список переменных, их тип и первые несколько значений каждой из них
  • Определите, переменных какого типа больше всего
Ответ неверный

Проверьте, с помощью какой функции вы загружаете данные. В случае read.csv() ответ будет верный, в случае read_csv() из пакета tidyverse ответ будет отличаться.

#4

  1. Выведите первые 15 строк датафрейма.
  2. Выведите 6 последних строк датафрейма.

Для самопроверки введите через запятую id первого и последнего наблюдения (строки) в датасете.

#5

Выведите базовые описательные статистики по всем колонкам датасета с помощью одной функции.

Для самопроверки в поле ниже введите среднее (mean) по переменной q6, округлённое до трёх десятичных знаков.

Подсказки
Что надо сделать?
  • Выведите базовые описательные статистики по всем переменных датафрейма с помощью функции summary().
Ответ неверный

Проверьте, что вы вводите среднее значение именно для переменной q6.

#6

Данные первично исследованы. Теперь можно объединить все файлы в единый датасет.

Загрузите все файлы данных и объедините их в один датафрейм. Назовите его dd. Сделайте это с помощью цикла.

В качестве ответа для самопроверки введите количество строк в получившемся датафрейме.

Подсказки
Как делать задание?
  • Напишите цикл, который проходится по вектору названий файлов, и читает каждый из указанных файлов
  • Учтите, что функция dir() возвращает только названия файлов, а чтобы они были прочитаны, необходимо добавить к их названиям имя папки, в которой они лежат
  • В теле цикла необходимо присоединять только что прочитанный файл к уже прочитанным и перезаписывать переменную
  • Не забудьте, что первый прочитанный файл также нужно к чему-то присоединить
Что надо сделать?
  • Возьмите за основу функцию read.csv(), которая читает файлы, и возвращает датафрейм.
  • Используйте функцию rbind(), чтобы объединить два датафрейма по строкам.
  • Чтобы первый загруженный датафрейм было к чему присоединять, создайте пустой датафрейм функцией data.frame().
  • Присоединить имя папки к названию файла, чтобы сформировать полный путь, можно с помощью функции paste0().
Ответ неверный
  • Проверьте, что цикл выполнился столько раз, сколько файлов есть в папке (посмотрите на значение переменной-итератора в Environment).
  • Проверьте, что какой-либо из файлов не прочитался более одного раза.

#7

Проверьте, есть ли в файлах данные, собранные в разные года. Для этого поработайте с переменной date. Обратите внимание на её тип.

Для выполнения понадобится библиотека lubridate.

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

Подсказки
Как делать задание?
  • Определите тип переменной date и скорректируйте его — измените на datetime при необходимости.
  • Выделите из даты год
  • Посчитайте число уникальных значений
Что надо сделать?
  • Проверьте тип переменной date с помощью функции class().
  • Перезапишите переменную, приведя её к типу datetime с помощью соответствующей функции из пакета lubridate.
  • Чтобы перезаписать переменную, необходимо использовать синтаксис с индексацией по имени вместе и оператором присваивания <-
  • Выделите из перезаписанной переменной date год с помощью соответствующей функции из lubridate.
  • Определите число уникальных значений года

#8

Отберите из всего датасета только те данные, которые были собраны в осенний период — сентябрь, октябрь, ноябрь. Сохраните результат в переменную dd_fall.

В качестве ответа для самопрверки введите количество строк в получившемся датафрейме.

Подсказки
Как делать задание?
  • Выделите из переменной с датой месяц
  • Проиндексируйте датафрей по необходимому условию аналогично индексации матрицы
  • В датафрейме необходимо сохранить все колонки
  • Сохраните результат в переменную
Что надо сделать?
Ответ неверный

Проверьте условия индексации — в сабсет должны попасть только месяца 9, 10 и 11.

#9

Создайте в рабочей директории папку с названием hw3-prepdata.

Описание формата инпута.

#10

Экспортируйте датасет с осенними наблюдениями в созданную папку hw3-prepdata.

Описание формата инпута.

Дополнительные задания

#1

На практике мы создали проект для нашего курса. Давайте создадим в нем структуру.

Создайте в директории проекта три папки: data, scripts и graphs, в которых будут храниться данные, скрипты и визуализации, которые мы впоследствии будем создавать.

Распределите файлы, накопившиеся в ходе курса, по соответствующих папкам. Можете создать дополнительные подпапки внутри data, scripts и graphs, если считаете нужным. Задание выполняется без кода.

Описание формата инпута.

#2

Напишите функцию, которая загружает все файлы из папки в один датафрейм.

Функция должна принимать на вход путь в папке и возвращать датафрейм, в котором будут содержать все данные из её файлов. Считайте, что папка содержит только файлы данных формата CSV, а их структура одинакова.

Описание формата инпута.

#3

Возьмите файл и загрузите его в R c помощью функции read.table(). С ним есть проблема, которую вам необходимо решить. Тут есть полезный инструмент.

Описание формата инпута.

#4

Модифицируйте функцию из дополнительного задания 2 так, чтобы она могла обрабатывать различные кодировки файлов. Основное поведение функции должно остаться прежним.

Описание формата инпута.

#5

Превратите директорию проекта курса в git-репозиторий (локальный или облачный).

Выполните задание, если вы знакомы с git. Иначе, пропустите задание.

Если вы создали облачный репозиторий, добавьте в скрипт комментарием ссылку на него.

Описание формата инпута.