Учебная страница курса биоинформатики,
год поступления 2014
http://makarich.fbb.msu.ru/artemov/R/example_agg/grades.csv
http://makarich.fbb.msu.ru/artemov/R/example_agg/metadata.csv
dplyr
Позволяет легко извлекать и преобразовывать данные Имеет простой синтаксис Позволяет выстраивать конвейер и не плодить лишние промежуточные переменные
Устанавливаем пакет
install.packages("dplyr")
Анализируем данные о качестве воздуха. Select
head(airquality)
Select
select(airquality, Wind, Temp)
Filter
Выберем все строки, где температура >70 (не пугайтесь, это в фаренгейтах)
f_airquality<-filter(airquality, Temp > 70)
Можно комбинировать. Выведем строки, где температура >80, а месяц позже чем май
f_airquality<- filter(airquality, Temp > 80 & Month > 5)
задание 1
Выведите данные airquality за август, когда температура была больше 75, но меньше 90
Mutate
Позволяет добавить новый столбец к данным.
Например, добавим столбец с температурой в градусах Цельсия
m_airquality<-mutate(airquality, TempInC = (Temp - 32) * 5 / 9)
transmute
Делает тоже самое, что mutate, только возвращает один новый столбец
c_temp<-transmute(airquality, TempInC = (Temp - 32) * 5 / 9)
Задание 2
Добавьте столбец Wind_kmh – скорость в км/ч (в столбце Wind данные в милях/ч). Считайте, что миля=1.6 км
Summarise
Позволяет применять функцию к данным (очень мощная штука!)
Вычислим среднюю температуру
summarise(airquality, mean(Temp, na.rm = TRUE))
Group By
Используется для группировки данных по одной и более переменных.
Выведем среднюю температуру по месяцам
summarise(group_by(airquality, Month), mean(Temp, na.rm = TRUE))
Задание 3
Выведите среднюю скорость ветра по месяцам
Sample
Позволяет выбирать случайные строки из датафрейма
sample_n(airquality, size = 5) sample_frac(airquality, size = 0.05)
Count
Считает строки, группируя их по заданным столбцам. Посчитаем количество строк для каждого месяца
count(airquality, Month)
Arrange
Позволяет упорядочить датафрейм по столбцам. Упорядочим наш датафрейм по месяцам (в порядке убывания), затем по дням
new_airquality<-arrange(airquality, desc(Month), Day) head(new_airquality)
Конвейер
Можно передавать данные из одной команды в другую.
airquality %>% filter(Month != 5) %>% group_by(Month) %>% summarise(mean(Temp, na.rm = TRUE))
Тоже что и
filteredData <- filter(airquality, Month != 5) groupedData <- group_by(filteredData, Month) summarise(groupedData, mean(Temp, na.rm = TRUE))
Inner_join
Склеивает таблицы по столбцу (столбцам)
stud<-inner_join(metadata, grades, by=c("id"))
left_join оставляет все строки из первого датафрейма right_join оставляет все строки из второго датафрейма
Для строк без соответствия добавляет NA
grades1<-grades[1:100,] stud1<-left_join(metadata, grades1, by=c("id")) head(stud1) stud_na<-filter(stud1, is.na(write))
Задание 4
Загрузите данные об оценках студентов grades.csv и данные с информацией о студентах metadata.csv Посчитайте среднюю оценку за письмо (write) для мальчиков и девочек Отличаются ли оценки по письму у мальчиков и девочек? (вспоминаем статистику)