Ответы, отчеты, курсовые, лекции 1-3 курс (1, 2, 3, 4, 5 семестр) ЧГУ КТ-43-15 / 3 семестр / R Language лабы (Сковорцов) / Анализ данных на языке R
.pdf2. Работа с data frame
Все |
используемые |
файлы |
доступны |
по |
ссылке: |
|
https://goo.gl/VSIZ9c. |
|
|
|
|
||
Итак, |
ранее |
мы |
научились (я |
надеюсь) |
как |
работать |
с переменными, |
векторами. Как |
создавать |
и работать с |
табличными данными. Но как правило при анализе данных мы сами не создаем табличные данные. Мы работаем с готовыми данными. В каком виде обычно представлены данные в интернете? Обычно это Excel-таблицы, текстовые данные, xml данные, JSON данные, SQL запросы. Сейчас же мы поговорим о представлении данных в виде csv файлах. Что такое csv файл? Это текст, в котором одна строка текста соответствует одной строке таблицы, а колонки разделены каким-то разделителем. Чаще всего этим разделителем является запятая, но если в русскоязычном офисном табличном редакторе создать csv файл из таблицы, то разделителем будет точка с запятой.
Хорошо, допустим у нас есть какой-то csv файл. Как нам с ним работать в R? Для этого есть специальная функция read.csv. Более
подробно ознакомиться |
с работой этой функции |
можно |
при помощи знака “?”, |
после которого необходимо |
написать |
функцию, справку по которой мы хотим получить. |
|
?read.csv
В скобках в кавычках указывается название с расширением загружаемого csv файла. Если разделителем в csv является
не запятая, то через запятую указываем необходимый нам разделитель.
mydata <- read.csv('evals.csv')
#разумеется, у вас может быть другое название файла
#также убедитесь, что файл находится в рабочей директории
#или укажите полный путь к файлу
Чтобы не выводить все строки датафрейма, можно использовать функции head () и tail (), которые по умолчанию показывают первые шесть и последние шесть значений датафрейма соответственно. Естественно, можно самому задавать необходимое количество выводимых строк.
head(mydata, 3) tail(mydata)
Функция View () показывает наш датафрейм в виде таблицы.
View(mydata)
Чтобы посмотреть из чего состоит наш датафрейм, то есть посмотреть какие переменные, какие у них типы данных, используется функция str (). Если нужно вспомнить только названия содержащихся переменных, то можно воспользоваться функцией names ().
str(mydata)
names(mydata)
Чтобы обратиться к определенной переменной (столбцу) в датафрейме, необходимо написать название датафрейма и через знак “$” название искомой переменной. Естественно с полученным столбцом мы можем делать какие-то действия: сохранить в какую-то другую переменную, найти среднее значение, увеличить значения переменной в два раза и много другое. Если при обращении в датафрейме к переменной таковой не обнаруживается, то создается новая переменная с таким же названием.
b <- mydata$score mean(mydata$score) mydata$score * 2
mydata$ten_point_scale <- mydata$score * 2 mydata$new_varible <- 0
Количество переменных и строк в датафреймах может быть очень много, а в разных датафреймах может быть их разное количество. Поэтому неразумно запоминать в каком датафрейме сколько строк и столбцов. Вместо этого лучше использовать функции, которые возвращают реальное количество строк или столбцов.
nrow(mydata)
ncol(mydata)
mydata$number <- 1:nrow(mydata)
Естественно, что при анализе данных нам необходимо разбивать датафрейм на какие-то более мелкие части. Чтобы понять как это делать, рассмотрим то, как компьютер видит наш датафрейм.
Допустим, у нас есть датафрейм, состоящий из четырех строк и пяти столбцов:
|
Столбец |
Столбец |
Столбец |
Столбец |
Столбец |
|
1 |
2 |
3 |
4 |
5 |
|
|
|
|
|
|
1 |
1 |
2 |
3 |
4 |
5 |
|
|
|
|
|
|
2 |
6 |
7 |
8 |
9 |
10 |
|
|
|
|
|
|
3 |
11 |
12 |
13 |
14 |
15 |
|
|
|
|
|
|
4 |
16 |
17 |
18 |
19 |
20 |
|
|
|
|
|
|
|
Столбец |
Столбец |
Столбец |
Столбец |
Столбец |
|
1 |
2 |
3 |
4 |
5 |
|
|
|
|
|
|
1 |
11 |
12 |
13 |
14 |
15 |
|
|
|
|
|
|
2 |
21 |
22 |
23 |
24 |
25 |
|
|
|
|
|
|
3 |
31 |
32 |
33 |
34 |
35 |
|
|
|
|
|
|
4 |
41 |
42 |
43 |
44 |
45 |
|
|
|
|
|
|
Как можно видеть, значению в первой ячейке соответствует номер позиции [1,1], второй - [1,2] и так далее. То есть, если проводить аналогию с другими языками программирования, датафреймы по сути двумерные массивы. Если не указать одно из позиций индекса, то выведется или весь столбец, или вся строка.
Естественно в качестве значения позиции можно использовать вектор значений.
mydata[1,1]
mydata[c(2,193,225),1]
mydata[101:200,1]
mydata[5,]
mydata[,1] == mydata$score
mydata[,2:5]
Кроме вывода значений по индексам, можно выводить определенные значения с использованием какого-то условия. При этом можно задать вывод определенных столбцов датафрейма.
mydata$gender mydata$gender == 'female'
mydata[mydata$gender == 'female',1:3])
Но существует способ вывода значений с использованием какого-то условия без использования индексации. В функции subset () указывается название датафрейма и условие по которому будут отобраны значения.
subset(mydata, gender == 'female')) subset(mydata, score > 3.5))
В ходе исследований может возникнуть такая ситуация, когда результаты исследований записаны в разных файлах. Чтобы объединить датафреймы существуют функции rbind () и cbind ().