Главная — Семестр 2 |
Обновлено: 06 марта 2017 |
Установить и подключить пакеты
library(dplyr)
library(tidyr)
library(reshape2)
Если файл скачен, то можно следующим образом закачать данные:
x <- read.csv(file = "score_2.csv", header = T, sep = ";", dec = ",")
head(x)
## n fio group sem score
## 1 1 Аксенова Анна Александровна 31 36.0 36.0
## 2 2 Аскольская Надежда Кирилловна 22 24.0 24.0
## 3 3 Ахмедова Вазифа Курбановна 11 0.0 0.0
## 4 4 Ахметзянова Дарья Юрьевна 22 12.0 12.0
## 5 5 Ахметова Зиля Фаридовна 22 30.0 30.0
## 6 6 Буханов Денис Владимирович 21 13.5 13.5
Можно непосредственно из сети.
x <- read.csv(file = "https://raw.githubusercontent.com/leonovmx/info/gh-pages/s2/score_2.csv",
header = T, sep = ";", dec = ",")
head(x)
## n fio group sem score
## 1 1 Аксенова Анна Александровна 31 36.0 36.0
## 2 2 Аскольская Надежда Кирилловна 22 24.0 24.0
## 3 3 Ахмедова Вазифа Курбановна 11 0.0 0.0
## 4 4 Ахметзянова Дарья Юрьевна 22 12.0 12.0
## 5 5 Ахметова Зиля Фаридовна 22 30.0 30.0
## 6 6 Буханов Денис Владимирович 21 13.5 13.5
sapply(X = x[,-2], FUN = mean)
## n group sem score
## 38.50000 21.55263 16.11842 16.11842
tapply(X = x$sem, INDEX = x$group, FUN = mean)
## 11 12 21 22 31 32
## 0.00000 0.00000 25.09375 20.50000 24.06250 20.15385
tapply(X = x$sem, INDEX = x$group, FUN = max)
## 11 12 21 22 31 32
## 0 0 40 40 40 40
tapply(X = x$sem, INDEX = x$group, FUN = min)
## 11 12 21 22 31 32
## 0 0 0 0 8 0
head(x)
## n fio group sem score
## 1 1 Аксенова Анна Александровна 31 36.0 36.0
## 2 2 Аскольская Надежда Кирилловна 22 24.0 24.0
## 3 3 Ахмедова Вазифа Курбановна 11 0.0 0.0
## 4 4 Ахметзянова Дарья Юрьевна 22 12.0 12.0
## 5 5 Ахметова Зиля Фаридовна 22 30.0 30.0
## 6 6 Буханов Денис Владимирович 21 13.5 13.5
Позволяет агрегировать данные
# reshape
y <- melt(data = x, id.vars = c("n", "fio","group"))
head(y)
## n fio group variable value
## 1 1 Аксенова Анна Александровна 31 sem 36.0
## 2 2 Аскольская Надежда Кирилловна 22 sem 24.0
## 3 3 Ахмедова Вазифа Курбановна 11 sem 0.0
## 4 4 Ахметзянова Дарья Юрьевна 22 sem 12.0
## 5 5 Ахметова Зиля Фаридовна 22 sem 30.0
## 6 6 Буханов Денис Владимирович 21 sem 13.5
r <- dcast(data = y, formula = group ~ variable, fun.aggregate = mean)
head(r)
## group sem score
## 1 11 0.00000 0.00000
## 2 12 0.00000 0.00000
## 3 21 25.09375 25.09375
## 4 22 20.50000 20.50000
## 5 31 24.06250 24.06250
## 6 32 20.15385 20.15385
Для перегруппировки данных
head(gather(x, what, score, sem:score))
## n fio group what score
## 1 1 Аксенова Анна Александровна 31 sem 36.0
## 2 2 Аскольская Надежда Кирилловна 22 sem 24.0
## 3 3 Ахмедова Вазифа Курбановна 11 sem 0.0
## 4 4 Ахметзянова Дарья Юрьевна 22 sem 12.0
## 5 5 Ахметова Зиля Фаридовна 22 sem 30.0
## 6 6 Буханов Денис Владимирович 21 sem 13.5
head(gather(x[,-2], what, score, -n))
## n what score
## 1 1 group 31
## 2 2 group 22
## 3 3 group 11
## 4 4 group 22
## 5 5 group 22
## 6 6 group 21
q <- gather(x, what, score, -n, -fio)
head(q)
## n fio what score
## 1 1 Аксенова Анна Александровна group 31
## 2 2 Аскольская Надежда Кирилловна group 22
## 3 3 Ахмедова Вазифа Курбановна group 11
## 4 4 Ахметзянова Дарья Юрьевна group 22
## 5 5 Ахметова Зиля Фаридовна group 22
## 6 6 Буханов Денис Владимирович group 21
head(spread(q, what, score))
## n fio group score sem
## 1 1 Аксенова Анна Александровна 31 36.0 36.0
## 2 2 Аскольская Надежда Кирилловна 22 24.0 24.0
## 3 3 Ахмедова Вазифа Курбановна 11 0.0 0.0
## 4 4 Ахметзянова Дарья Юрьевна 22 12.0 12.0
## 5 5 Ахметова Зиля Фаридовна 22 30.0 30.0
## 6 6 Буханов Денис Владимирович 21 13.5 13.5
Для фильтрации, добавлении новых переменных, сортировки
head(dplyr::arrange(x, group))
## n fio group sem score
## 1 3 Ахмедова Вазифа Курбановна 11 0 0
## 2 9 Воеводина Алена Вячеславовна 11 0 0
## 3 11 Гаджиева Аида Тимуровна 11 0 0
## 4 15 Горячева Олеся Андреевна 11 0 0
## 5 16 Гулиева Залина Адсаламовна 11 0 0
## 6 17 Гулиева Эсет Адсаламовна 11 0 0
head(dplyr::arrange(x, group, desc(score)))
## n fio group sem score
## 1 3 Ахмедова Вазифа Курбановна 11 0 0
## 2 9 Воеводина Алена Вячеславовна 11 0 0
## 3 11 Гаджиева Аида Тимуровна 11 0 0
## 4 15 Горячева Олеся Андреевна 11 0 0
## 5 16 Гулиева Залина Адсаламовна 11 0 0
## 6 17 Гулиева Эсет Адсаламовна 11 0 0
head(dplyr::filter(x, group == 21))
## n fio group sem score
## 1 6 Буханов Денис Владимирович 21 13.5 13.5
## 2 7 Ваганова Дарья Андреевна 21 24.0 24.0
## 3 19 Гуфранова Анна Хайдаровна 21 0.0 0.0
## 4 23 Дугарова Александра Игоревна 21 40.0 40.0
## 5 24 Дударевич Полина Анатольевна 21 0.0 0.0
## 6 31 Ипатьев Кирилл Юрьевич 21 24.0 24.0
А тут применение %>%
x %>%
arrange(desc(score), desc(score)) %>%
dplyr::filter(group == 21 | group == 31) %>%
dplyr::mutate(nexvatilo = 40 - score,
nx_zada4 = ceiling(nexvatilo/2)) %>%
dplyr::filter(score != 40) %>%
head(4)
## n fio group sem score nexvatilo nx_zada4
## 1 1 Аксенова Анна Александровна 31 36.0 36.0 4.0 2
## 2 37 Коннова Анастасия Сергеевна 21 32.0 32.0 8.0 4
## 3 57 Руч Камила Хайруллаевна 31 31.5 31.5 8.5 5
## 4 7 Ваганова Дарья Андреевна 21 24.0 24.0 16.0 8