Добавил:
По своей натуре перфекционист. Поэтому люблю все аккуратно оформлять и упорядочивать, складывать по полочкам. Вот, не пропадать же добру, нажитому за четыре кропотливых семестра. Тут я выложил все мои ответы, курсовые, отчеты и некоторые ДЗ. Они могут вам помочь для получения зачета или сдачи экзамена. Если чего-то не нашли в папочках, то попытайте удачу в разделе НЕОТСОРТИРОВАННОЕ на моей страничке, там все 4 семестра разложены по папкам. ГРУППА КТ-43-15. Годы обучения 2015-2019. Коллекция будет пополняться. Что ж, удачки :З Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
86
Добавлен:
15.09.2017
Размер:
451.1 Кб
Скачать

В первом случае второй датафрейм добавляется к первому как новые строки, при этом количество столбцов в первом и втором датафрейме должны совпадать.

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

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)

Соседние файлы в папке R Language лабы (Сковорцов)