Ответы, отчеты, курсовые, лекции 1-3 курс (1, 2, 3, 4, 5 семестр) ЧГУ КТ-43-15 / 3 семестр / R Language лабы (Сковорцов) / Анализ данных на языке R
.pdfВ первом случае второй датафрейм добавляется к первому как новые строки, при этом количество столбцов в первом и втором датафрейме должны совпадать.
Во втором случае данные добавляются как новые столбцы, а количество строк, как можно догадаться, тоже должно совпадать.
mydata2 <- subset(mydata, gender == 'female') mydata3 <- subset(mydata, gender == 'male') mydata4 <- rbind(mydata2, mydata3)
mydata5 <- mydata[,1:10] mydata6 <- mydata[,11:24]
mydata7 <- cbind(mydata6, mydata5)
Задание 2.1. В dataframe mydata сохраните данные из файла evals.csv, потом создайте новую колонку (переменную) под названием even_age, в которой будут единицы, если значение возраста четное, и нули если количество нечетное.
Задание 2.2. Теперь ваша задача создать новый dataframe и сохранить в нее из mydata значения тех строк, в которых балл больше среднего.
Задание 2.3. Ваша задача создать новый dataframe, в котором будут сохранены только третья, семидесятая, сто десятая, триста двенадцатая и последняя строчка датафрейма mydata.
3. Циклы и условия
Все используемые файлы доступны по ссылке: https://goo.gl/VSIZ9c.
Циклы и условия в R не отличаются от таковых в других языках программирования. Тут тоже есть конструкция условных операторов if - else. К примеру, зададим переменной а какое-нибудь значение. Надо отметить, что результатом условия должно быть только одно правдивое или ложное высказывание.
a <- 10
if (a > 0){ print('positive')
}else {
print('not positive')
}
Обратите внимание, что оператор else находится на той же строке, что и закрывающая фигурная скобка. Если необходимо несколько условий, то добавляется еще одна проверка условия else if ().
if (a > 0){ print('positive')
}else if (a < 0) { print('negative')
}else print('zero')
Функция ifelse () это более короткая запись конструкции if-else, но у нее есть интересная особенность, о которой будет сказано ниже.
a <- 10
ifelse(a > 0, 'positive', 'not positive')
Циклы (многократное повторение одинаковых действий) в R так же не отличаются от циклов в других языках программирования. Здесь тоже есть цикл for () и while (). Различие между этими циклами в других языках программирования как правило состоит в порядке проверки условия. В for () условие проверяется перед совершением действий в цикле, в while () условие проверяется после.
В R же и там, и там условие проверяется в начале. Так в чем же различие? В цикле for () счетчик, отвечающий за количество повторений, увеличивается без дополнительного вмешательства.
for (i in 1:100){ print(i)
}
for (i in 1:nrow(mydata)){ print(mydata$score[i])
}
# for + if
for (i in 1:nrow(mydata)){
if (mydata$gender[i] == 'male'){ print(mydata$score[i])
}
}
В цикле while () счетчик, отвечающий за количество повторений, самостоятельно не увеличивается, поэтому необходимо заранее задать первоначальное значение и в дальнейшем производить переподсчет.
i <- 1
while(i < 51){ print(mydata$score[i]) i <- i+1
}
Теперь вернемся к интересной особенности функции ifelse (). Как мы помним результатом условия должно быть только одно правдивое или только одно ложное высказывание. Если мы попробуем сравнить вектор, длина которого больше единицы, с каким-то значением, то при использовании if () или else if () мы получим ошибку. Чтобы избежать этого, мы использовали в примерах выше проверку каждой позиции вектора.
Функция ifelse () же может работать с векторами любой длины. Сравните:
mydata$quality <- rep(NA, nrow(mydata))
for (i in 1:nrow(mydata)){ if (mydata$score[i] > 4){
mydata$quality[i] <- 'good'
} else mydata$quality[i] <- 'bad'
}
mydata$quality2 <- ifelse(mydata$score > 4, 'good', 'bad')
Задание 3.1. Создайте новую переменную new_var в данных mydata, которая содержит единицы в строчках, если в возраст преподавателя не меньше сорока (переменная "age") или оценка меньше трех (переменная "score"). В строчках, в которых условие не выполняется, должны стоять нули.
Задание 3.2. В этой задаче от вас потребуется узнать некоторую информацию о типах данных в R самостоятельно! Встроенные в R данные AirPassengers - это новый для нас формат данных типа Time-Series. Изучите структуру этих данных, прежде чем начать решение задачи!
И так ваша задача создать переменную good_months и сохранить в нее число пассажиров только в тех месяцах, в которых это число больше, чем показатель в предыдущем месяце.
4. Описательные статистики
При работе c датафреймами вы могли заметить, что при просмотре структуры данных некоторые переменные имеют тип фактор. Что такое фактор? Фактор - это категория. Как выпадающий список.
df <- mtcars
str(df)