Заполните небольшую анонимную анкету по ссылке: https://goo.gl/forms/i4FqIW3lCEZdL3Ys2.
Дождитесь, когда ваши одногруппники заполнят анкету. По сигналу преподавателя пройдите по этой ссылке и посмотрите на полученные результаты. Выберите 10 анкет, которые заинтересовали вас больше всего.
Используя материалы практического занятия, создайте в R следующие векторы и сохраните в них данные по выбранным 10 студентам.
height
: ростmath
: балл ЕГЭ по математикеbiology
: балл ЕГЭ по биологииfav_subj
: любимый предметsex
: полplace
: место жительстваlength
: длина отрезка (в см)angle
: угол (в градусах)Обратите внимание: придумайте разумную систему кодирования для ваших данных. Например, любимые предметы в школе можно закодировать числами от 1 до 5, пол – 0 и 1 или буквами “F” и “M”, и так далее. Подумайте, какие из полученных векторов должны быть числовыми, а какие факторными (не-числовыми).
Решение.
На занятии мы договорились о следующем:
Пропущенные значения (нет ответа, например, если студент не сдавал ЕГЭ, или странные значения) обозначать NA
. Это специальный «пустой» тип в R, от английского Not applicable.
Векторы fav_subj
и sex
сделать текстовыми: любимый предмет обозначать первой буквой названия на английском языке ("B"
- Biology, "R"
- Russian language, "F"
- Foreign language, "M"
- Math, "N"
- None, ), а пол кодировать буквами F
и M
(женский и мужской) . Вектор place
сделать факторным, где 0
- это Москва, 1
- не Москва.
height <- c(176, 157, 184, 158, 160, 164, 174, 177, 170, 164)
math <- c(68, 70, 72, 70, 50, 72, 61, 72, 76, 74)
biology <- c(NA, 63, 93, 70, 84, 89, 69, 77, 74, 70)
fav_subj <- c("F", "R", "B", "N", "F", "M", "R", "B", "B", "R")
sex <- c("M", "F", "M", "F", "F", "F", "F", "M", "F", "F")
place <- factor(c(1, 0, 1, 1, 1, 0, 0, 1, 1, 0))
length <- c(27, 22, 26, 18, 30, 25, 30, 25, 25, 34)
angle <- c(40, 30, 30, 30, 30, 23, 25, 30, 25, 27)
Создайте из полученных векторов небольшую табличку, датафрейм. Сделать это можно с помощью функции cbind.data.frame()
. Пример:
name <- c("Anna", "Maria", "Isabella")
age <- c(23, 24, 25)
info <- cbind.data.frame(name, age)
info # вуаля
## name age
## 1 Anna 23
## 2 Maria 24
## 3 Isabella 25
Решение.
info <- cbind.data.frame(height, math, biology,
fav_subj, sex, place,
length, angle)
Чтобы открыть таблицу в удобном режиме просмотра, нужно кликнуть на название датафрейма во вкладке Environment справа (именно на само название, не на стрелочку в голубом кружке). Она откроется в отдельной вкладке, которую потом можно будет растянуть в отдельное окно. Альтернативный вариант - сделать то же, но с помощью кода:
View(info)
Теперь посмотрим, что с этой табличкой можно делать. Во-первых, посмотреть на её структуру:
str(info)
## 'data.frame': 10 obs. of 8 variables:
## $ height : num 176 157 184 158 160 164 174 177 170 164
## $ math : num 68 70 72 70 50 72 61 72 76 74
## $ biology : num NA 63 93 70 84 89 69 77 74 70
## $ fav_subj: Factor w/ 5 levels "B","F","M","N",..: 2 5 1 4 2 3 5 1 1 5
## $ sex : Factor w/ 2 levels "F","M": 2 1 2 1 1 1 1 2 1 1
## $ place : Factor w/ 2 levels "0","1": 2 1 2 2 2 1 1 2 2 1
## $ length : num 27 22 26 18 30 25 30 25 25 34
## $ angle : num 40 30 30 30 30 23 25 30 25 27
Функция str()
выводит на экран число строк или наблюдений (10 obs.
- observations) и число столбцов или переменных (8 variables
) в таблице. Также она выводит названия столбцов, их тип и первые несколько значений.
Чтобы получить описательные статистики, то есть сводную информацию по характеристикам в таблице, нам понадобится функция summary()
:
summary(info)
## height math biology fav_subj sex place
## Min. :157.0 Min. :50.0 Min. :63.00 B:3 F:7 0:4
## 1st Qu.:161.0 1st Qu.:68.5 1st Qu.:70.00 F:2 M:3 1:6
## Median :167.0 Median :71.0 Median :74.00 M:1
## Mean :168.4 Mean :68.5 Mean :76.56 N:1
## 3rd Qu.:175.5 3rd Qu.:72.0 3rd Qu.:84.00 R:3
## Max. :184.0 Max. :76.0 Max. :93.00
## NA's :1
## length angle
## Min. :18.00 Min. :23.0
## 1st Qu.:25.00 1st Qu.:25.5
## Median :25.50 Median :30.0
## Mean :26.20 Mean :29.0
## 3rd Qu.:29.25 3rd Qu.:30.0
## Max. :34.00 Max. :40.0
##
Все значения, которые здесь есть, мы интерпретировать не будем, вам ещё предстоит узнать о них на лекциях, но кое-что мы можем пояснить уже сейчас. Так, из показателей, понятных всем, для числовых переменных R выводит минимальное значение (Min.
), максимальное значение (Max.
) и среднее арифметическое (Mean
). Для текстовых или факторных переменных выводятся абсолютные частоты - сколько раз то или иное значение встретилось в столбце таблицы. Например, в нашей таблице info
, есть два респондента женского пола, 3 - мужского, плюс, один респондент свой пол не указал (NA
). Точнее, указал, но сказал, что пол паркетный :)
Если нас интересует конкретный столбец таблицы, можем его выбрать, указав через $
его название:
info$fav_subj # выбрали любимый предмет
## [1] F R B N F M R B B R
## Levels: B F M N R
Аналогичным образом можем запросить сводную информацию не для всей таблицы, а для одного столбца:
summary(info$length)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 18.00 25.00 25.50 26.20 29.25 34.00
Или воспользоваться функцией table()
, которая считает, сколько раз каждое значение переменной встретилось в таблице:
table(info$fav_subj)
##
## B F M N R
## 3 2 1 1 3
Для числовых столбцов тоже работает:
table(info$length)
##
## 18 22 25 26 27 30 34
## 1 1 3 1 1 2 1
Напоследок посмотрим, как запросить help по какой-нибудь функции, чтобы узнать, что она делает и как работает. Для этого достаточно поставить знак вопроса и написать название функции. Запросим помощь по функции mean()
:
?mean # см. вкладку Help
Альтернатива - использовать функцию help()
, причём запрашивать помощь можно и по встроенным датафреймам R, по учебным таблицам с данными. Попросим R рассказать что-то о датафрейме beavers
, который содержит данные для исследования температуры тела бобров :)
help(beavers) # см. вкладку Help