И вот снова я пишу свой пост спустя 5 дней валяния дурака и прокрастинирования. Сегодня я поняла, что осталось всего 2 сраные недели!!!!АААААААА!!!
Ладно, сегодня надо допройти курс по R ^_^ Вот я бjлван, что не сделала этого раньше. Ну да что сопли жевать? Погнали.
Можно присваивать массив значений, одновременно удлиняя вектор:
Cреднее квадратическое - квадратный корень из дисперсии; в отличие от дисперсии, имеет ту же размерность, что и случайная величина; характеризует усредненное отклонение случайной величины от среднего значения)
Чтобы залезть и посмотреть второй столбец, пишем его номер В ДВОЙНЫХ КВАДРАТНЫХ СКОБОЧКАХ.
Ладно, сегодня надо допройти курс по R ^_^ Вот я бjлван, что не сделала этого раньше. Ну да что сопли жевать? Погнали.
Можно присваивать массив значений, одновременно удлиняя вектор:
> sentence[5:7] <- c('the', 'poop', 'deck')
Или можно просто взять, создать сначала пустой вектор, а потом присвоить ему
имена c помощью функцииnames()
> ranks <- 1:3 > names(ranks) <- c("first", "second", "third")
А можно достать и до номера, используя значение, например в векторе ranks найти
элемент со значением "first"> ranks["first"]
Изменять номер вектора можно присвоив ему новую позицию:ranks["third"] <- 4
Построение графиков
Для векторов:
>barplot(VectorName)
Если присвоить имена значениям вектора, то получатся подписи к диаграмме ^^
>barplot(VectorName)
Если присвоить имена значениям вектора, то получатся подписи к диаграмме ^^
>vesselsSunk <- c(4, 5, 1)> names(vesselsSunk) <- c("England", "France", "Norway")
> barplot(vesselsSunk)
Деление, умножение, сложение, вычитание векторов такое же, как в матлабе. Есть сравнение векторов, но результат производится поэлементно:> a <- c(1, 2, 3)> a==c(1,99,3) [1] TRUE FALSE TRUE> a<c(1,99,3)[1] FALSE TRUE FALSE
Точечные диаграммы
функия plot(var1, var2) строит точненый график зависимости каждого элемента вектора 1 от соотвествующего ему по номеру элемента вектора 2.
> x <- seq(1, 20, 0.1) #seq - последовательность
> y <- sin(x)
> plot(x, y)
В векторе может не существовать какого-то значения. Обозначается оно NA.
Функция суммы элементов по дефолту не может посчитаться, но,если вызвать хэлп и
прочитать его, становится ясно, что изменив значение одного параметра можем посчи-
тать сумму элементов массива, исключая NA.> a <- c(1, 3, NA, 7, 9) > sum(a) [1] NA
> help(sum)
sum package:base R Documentation
Sum of Vector Elements
Description:
'sum' returns the sum of all the values present in its arguments.
Usage:
sum(..., na.rm = FALSE)
...
> sum(a, na.rm = TRUE)
[1] 20
Работа с матрицами
создаем нулевую матрицу:
> matrix(0, 3, 4)
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 0
[3,] 0 0 0 0
Её можно заполнить с помощью вектора, например:
> a <- 1:12
> matrix(a, 3, 4)
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
Значения из вектора в матрицу копируются по одному
Поменять размер матрицы можно, задав новые значения для функции размерности матрицы
Например:> plank <- 1:8> dim(plank) <- c(2, 4)
Достать элемент со значением 6 можно следующим образом:> print(plank) [,1] [,2] [,3] [,4] [1,] 1 3 5 7 [2,] 2 4 6 8> plank[2, 3] [1] 6 Как вы могли заметить, сначала идет номер строки, а потом номер столбца
А так можно посмотреть строку с номером 2> plank[2,] [1] 2 4 6 8
А так - 4-ый столбец> plank[, 4] [1] 7 8 А так - со 2-ого по 4-ый столбец:> plank[, 2:4] [,1] [,2] [,3] [1,] 3 5 7 [2,] 4 6 8
Графики для матриц
Графики для матриц> contour(volcano) # контурная диаграмма на плоскости
> persp(volcano, expand=0.2) #perspective - объемное изображение
> image(volcano) #"тепловое" изображение
Кратко о статистике
Среднее значение - average:
>mean(limbs)
>mean(limbs)
>barplot(limbs)
> abline(h = mean(limbs)) #рисует на графике горизонтальную линию
#со средним значением. abline(v=blabla) - вертинкальную линию
Медианное значение - median() - используется тогда, когда какой-то из параметров у
нас ооочень сильно отличается от остальных. Оно получается сортировкой значений и
выбором среднего. Для двух элементов медиана == среднему .
Cреднее квадратическое - квадратный корень из дисперсии; в отличие от дисперсии, имеет ту же размерность, что и случайная величина; характеризует усредненное отклонение случайной величины от среднего значения)
> deviation <- sd(pounds)
> abline(h = meanValue + deviation)
> abline(h = meanValue - deviation)
Функция фактор factor()
factor() - группирует вектор по категориям. В результате выдает категории (уровни) - levels.
> chests <- c('gold', 'silver', 'gems', 'gold', 'gems')
> types <- factor(chests)
> print(chests)
[1] "gold" "silver" "gems" "gold" "gems"
> print(types)
[1] gold silver gems gold gems
Levels: gems gold silver
Да, уровни здесь - интеджеровского типа. Для наглядности можем привести к
интеджеровскому типу с помощью команды:> as.integer(types) [1] 2 3 1 2 1 Так же уровни можно получить просто функцией levels()
> levels(types)
[1] "gems" "gold" "silver"
Можно использовать факторы, чтобы делить на категории графики. Разделим наши сундуки
по весу и ценности драгоценностей внутри:> weights <- c(300, 200, 100, 250, 150) > prices <- c(9000, 5000, 12000, 7500, 18000) > plot(weights, prices) Получили точечный график (диаграмму). Чтобы мы могли понять в каком сундуке что,
используем различные символы для золота, серебра и драгоценностей, конвертируя
"уровни" в integer:
> plot(weights, prices, pch=as.integer(types))
На графике для различных типов появились кружочки, треугольнички и крестики. ми-ми-ми
А что бы мы не думали, что же есть что, запилим легенду, определив её расположение,
присваеваемые значение и наши инты:
> legend("topright", c("gems", "gold", "silver"), pch=1:3)
Но есть один нюанс. При измении графика в этом случае придется обновлять легенду. Чтобы все делалось автоматом, модифицируем команду:
> legend("topright", levels(types), pch=1:length(levels(types)))
Тип данных - Data Frame
Это особый тип данных, который связывает между собой векторы с различными типами данных. Он сродни таблице БД или спредшиту в Экселе. Дата фрейм - таблица, которая содержит некоторое число колонок с данными различного типа и любое количество строк (а-ля запись в базе данных).
Наши вектора с весами, ценностью и типами трофеев в сундуках отличные кандидаты для объединения их всех в один фрейм. Делается это вызовом функции data.frame():> treasure <- data.frame (weights, prices, types)
> print(treasure)
weights prices types
1 300 9000 gold
2 200 5000 silver
3 100 12000 gems
4 250 7500 gold
5 150 18000 gems
Ура! Мы получили весьма милую табличку с нашими драгоценностями - treasure.
Чтобы залезть и посмотреть второй столбец, пишем его номер В ДВОЙНЫХ КВАДРАТНЫХ СКОБОЧКАХ.
> treasure[[2]]
[1] 9000 5000 12000 7500 18000
Или по названию:
> treasure[["weights"]]
[1] 300 200 100 250 150
Или можно сделать проще: название_фрейма$название_столбца (название столбца без
кавычек).
> treasure$prices
[1] 9000 5000 12000 7500 18000
> treasure$types
[1] gold silver gems gold gems
Levels: gems gold silver
Можно (и нужно) загружать фреймы из уже существующих файлов (спредшитов, например).
Пусть есть список файлов> list.files() [1] "targets.csv" "infantry.txt"И пусть "targets.csv" - файл CSV (Comma Separated Values) Внутри он выглядит как-то
так:
"Port","Population","Worth" "Cartagena",35000,10000 "Porto Bello",49000,15000 "Havana",140000,50000 "Panama City",105000,35000Загружаем файл с помощью read.csv():
> read.csv("targets.csv")
Port Population Worth
1 Cartagena 35000 10000
2 Porto Bello 49000 15000
3 Havana 140000 50000
4 Panama City 105000 35000
Если файл разделены на запятой, а табом, то функция немного меняется:
> read.table("infantry.txt", sep="\t")
V1 V2
1 Port Infantry
2 Porto Bello 700
3 Cartagena 500
4 Panama City 1500
5 Havana 2000
Чтобы созранялись заголовки, "включим" этот параметр:
> read.table("infantry.txt", sep="\t", header=TRUE)
Port Infantry
1 Porto Bello 700
2 Cartagena 500
3 Panama City 1500
4 Havana 2000
Сведем две таблички в одну. Функция merge(x,y) по дефолту сводит по одинаковому
столбцу:
> targets <- read.csv("targets.csv")
> infantry <- read.table("infantry.txt", sep="\t", header=TRUE)
> merge(x = targets, y = infantry)
Port Population Worth Infantry
1 Cartagena 35000 10000 500
2 Havana 140000 50000 2000
3 Panama City 105000 35000 1500
4 Porto Bello 49000 15000 700
А теперь протестим это на реальных данных!
___________________________________________________________________________________
А здесь, пожалуй, будут новые для меня слова:
booty - трофеи chest - не только грудь, но и сундук. akin to - сродни, родственный.
А здесь, пожалуй, будут новые для меня слова:
booty - трофеи chest - не только грудь, но и сундук. akin to - сродни, родственный.
tedious == monotonous == boring
--------------------------------------------------------------------------------------------------------------
Черт возьми! На самом деле я просто боюсь, что меня будут осуждать, упрекать и вообще отвернутся близкие, если не защищусь. Какой позор будет для семьи.

Комментариев нет:
Отправить комментарий