Основы языка r

62
Тема 2 Сергей Мастицкий БГУ, Минск, май 2014

Upload: sergey-mastitsky

Post on 29-Jun-2015

977 views

Category:

Data & Analytics


8 download

DESCRIPTION

Рассмотрены основные понятия и средства языка статистических вычислений R.

TRANSCRIPT

Page 1: Основы языка R

Тема 2

Сергей Мастицкий БГУ, Минск, май 2014

Page 2: Основы языка R

2.1. Первые шаги

Page 3: Основы языка R

R работает по принципу «вопрос-ответ»

Команды вводятся после «знака подсказки» в

командной строке, напр.:

> plot(rnorm(1000))

1000 случайно сгенерированных

нормально распределенных значений

Author: Sergey Mastitsky

0 200 400 600 800 1000

-3

-2

-1

0

1

2

3

Index

rnorm

(1000)

Page 4: Основы языка R

> 2 + 2

[1] 4

> exp(-2)

[1] 0.1353353

> rnorm(10)

[1] -0.505 1.728 -0.323

[4] -1.900 1.808 -1.898

[7] -1.108 -1.215 1.092

[10] -0.759

Author: Sergey Mastitsky

Page 5: Основы языка R

> x <- 2

> x

[1] 2

> x + x

[1] 4

> y <- 5

> x * y

[1] 10

Author: Sergey Mastitsky

Page 6: Основы языка R

Можно использовать любые символы, но:

имена не должны начитаться с точки “.” и

содержать пробелы

имена не должны начинаться с цифр

имена чувствительны к регистру: WT и wt –

для R это разные переменные

Не следует использовать зарезервированные

служебные имена: - c, q, t, C, D, F, I, T

- diff, df, pt, и некоторые др.

Author: Sergey Mastitsky

Page 7: Основы языка R

Векторы в R – самостоятельные объекты: > weight <- c(60, 72, 57, 90, 95, 72)

> weight

[1] 60 72 57 90 95 72

c(…) – функция «конкатенации» (concatenation)

Можно выполнять вычисления над

векторами, как над обычными числами: > height <- c(1.75, 1.80, 1.65, 1.90,

1.74, 1.91)

> bmi <- weight/height^2

> bmi

[1] 19.592 22.2222 20.937 24.931 31.378 19.736 Author: Sergey Mastitsky

Page 8: Основы языка R

Расчет среднего веса: > xbar <- sum(weight)/length(weight)

> xbar

[1] 74.333

Расчет стандартного отклонения:

> SD <- sqrt(sum((weight - xbar)^2) /

(length(weight) - 1))

> SD

[1] 15.422

)1/()( 2 nxxSD i

Author: Sergey Mastitsky

Page 9: Основы языка R

> mean(weight)

[1] 74.33333

> sd(weight)

[1] 15.42293

Author: Sergey Mastitsky

Page 10: Основы языка R

2.2. R как язык программирования

Page 11: Основы языка R

То, что мы вводим в командную строку, имеет

более общее название – выражение (expression)

Выражения обычно включают имена

переменных, операторы и функции:

xbar <- sum(weight)/length(weight)

функция

имя переменной оператор

Author: Sergey Mastitsky

Page 12: Основы языка R

Выражения выполняют действия над

объектами

Практически все, что мы создаем в R,

можно назвать “объектом” x, weight, height, SD – все это объекты

R – объекто-ориентированный язык

Author: Sergey Mastitsky

Page 13: Основы языка R

Объекты, содержащие данные (data

objects) – векторы, матрицы, списки и

таблицы данных

Функции (function objects)

Author: Sergey Mastitsky

Page 14: Основы языка R

Функции

Page 15: Основы языка R

Функция – имеющий имя набор команд,

которые выполняют определенные операции

над другими объектами: plot(), c(), sum(), mean()...

Фактичекие аргументы функций – объекты, к

которым применяется функция: plot(height, weight)

Формальные аргументы – параметры,

управляющие поведением функции: plot(height, weight, pch = 2)

Author: Sergey Mastitsky

Page 16: Основы языка R

Скобки должны использоваться всегда,

даже если мы не указываем никаких

аргументов при вызове функции

Типичный пример: ls()

Author: Sergey Mastitsky

Page 17: Основы языка R

Векторы

Подробнее см.:

http://r-analytics.blogspot.de/2011/06/r_30.html

Page 18: Основы языка R

Количественные (numeric) > c(2, 7, 10)

[1] 2 7 10

Символьные (character) > c("Treatment 1", "Treatment 2")

[1] "Treatment 1" "Treatment 2"

Логические: TRUE или FALSE

> b <- bmi > 25

> b

[1] FALSE FALSE FALSE FALSE TRUE FALSE

Author: Sergey Mastitsky

Page 19: Основы языка R

Часто встречаются на практике

В R обозначаются как NA:

> c(2, NA, 10)

[1] 2 NA 10

Операции над NA возвращают NA, и поэтому

часто такие значения приходится исключать

из анализа: > mean(c(2, NA, 10))

[1] NA

Author: Sergey Mastitsky

Page 20: Основы языка R

Примеры конкатенации: > c(42,57,12,39,1,3,4)

[1] 42 57 12 39 1 3 4

> x <- c(1, 2, 3)

> y <- c(10, 20)

> c(x, y)

[1] 42 57 12 39 1 3 4 10 20

> c("abc", 10, 20)

[1] "abc" "10" "20"

Author: Sergey Mastitsky

Page 21: Основы языка R

Последовательность чисел (sequence): > seq(from = 4, to = 10)

[1] 4 5 6 7 8 9 10

Команда с тем же результатом: > 4:10

Последовательность с шагом 2:

> seq(from = 4, to = 10, by = 2)

[1] 4 6 8 10

Author: Sergey Mastitsky

Page 22: Основы языка R

Повторяющийся (repeated) мотив: > z <- c(2, 4, 6)

> rep(z, 2)

[1] 2 4 6 2 4 6

Попробуйте также: > rep(z, 1:3)

> rep(1:2, c(3, 6))

> rep(1:2, each = 10)

Author: Sergey Mastitsky

Page 23: Основы языка R

Матрицы

Подробнее см.:

http://r-analytics.blogspot.de/2011/07/r_10.html

Page 24: Основы языка R

Матрица – 2D-вектор

Широко используются в статистике

Могут быть использованы для хранения

данных

Author: Sergey Mastitsky

Page 25: Основы языка R

Пример использования matrix() > h <- matrix(1:12, nrow=3,byrow=TRUE)

> h

Присваивание имен строкам и столбцам

матрицы: > rownames(h) <- c("A", "B", "C")

> colnames(h) <- c("V1", "V2", "V3", "V4")

> h

Транспозиция (transposition) матрицы: > t(h)

Author: Sergey Mastitsky

Page 26: Основы языка R

“Связывание” (binding) векторов по

столбцам (columns): > cbind(A = 1:4, B = 5:8, C = 9:12)

“Связывание” (binding) векторов по строкам

(rows): > rbind(A = 1:4, B = 5:8, C = 9:12)

Author: Sergey Mastitsky

Page 27: Основы языка R

Факторы

Подробнее см.:

http://r-analytics.blogspot.de/2011/07/r_17.html

Page 28: Основы языка R

Фактор – качественная переменная,

содержащая метки для групп данных

(например, пол, место отбора проб,

экспериментальная группа и т.д.)

Уровни фактора – конкретные

категории такой переменной (например,

“самец” и “самка”)

Author: Sergey Mastitsky

Page 29: Основы языка R

> sex <- c("male", "male",

"female", "female", "female")

> sex <- factor(sex)

> sex

[1] male male female female female

Levels: female male

> levels(sex)

[1] "female" "male"

> as.numeric(sex)

[1] 2 2 1 1 1

Author: Sergey Mastitsky

Page 30: Основы языка R

Этот способ тоже сработает, но лучше

его не использовать: > sex <- c(0, 0, 1, 1, 1)

> sex <- factor(sex)

> sex

[1] 0 0 1 1 1

Levels: 0 1

Author: Sergey Mastitsky

Page 31: Основы языка R

Списки

Подробнее см.:

http://r-analytics.blogspot.de/2011/07/r_13.html

Page 32: Основы языка R

Список (list) – набор R-объектов любого

типа > sex <- c("male", "male",

"female")

> weight <- c(80, 85, 60)

> height <- c(1.75, 1.80, 1.68)

> data <- list(Sex = sex,

Weight = weight,

Height = height)

Author: Sergey Mastitsky

Page 33: Основы языка R

> data

$Sex

[1] "male" "male" "female"

$Weight

[1] 80 85 60

$Height

[1] 1.75 1.80 1.68

Author: Sergey Mastitsky

Page 34: Основы языка R

> data$Sex

[1] "male" "male" "female“

> data$Weight

[1] 80 85 60

и т.д. …

Author: Sergey Mastitsky

Page 35: Основы языка R

Таблицы данных

Подробнее см.:

http://r-analytics.blogspot.de/2011/07/r_22.html

Page 36: Основы языка R

Таблица данных – список векторов

и/или факторов одинаковой длины,

упорядоченных в виде таблицы.

Каждый ряд в такой таблице

соответствует одному наблюдению. У

рядов также могут быть имена.

Author: Sergey Mastitsky

Page 37: Основы языка R

> data <- data.frame(

Sex = sex,

Weight = weight,

Height = height)

> data

Sex Weight Height

1 male 80 1.75

2 male 85 1.80

3 female 60 1.68

Author: Sergey Mastitsky

Page 38: Основы языка R

> names(data)

[1] "Sex" "Weight" "Height“

> data$Sex

[1] male male female

Levels: female male

> data$Height

[1] 1.75 1.80 1.68

Author: Sergey Mastitsky

Page 39: Основы языка R

Индексирование

Page 40: Основы языка R

Извлечение определенных значений: > weight[2]

[1] 85

> height[c(1, 3)]

[1] 1.75 1.68

> i <- c(2, 3)

> weight[i]

[1] 85 60

> height[-i]

[1] 1.75

Author: Sergey Mastitsky

Page 41: Основы языка R

Условный выбор: > height[height < 1.80]

[1] 1.75 1.68

> weight[weight>=80 & weight<=85]

[1] 80 85

Другие логические операторы: | (логическое “или”)

! (логическое “не”)

Author: Sergey Mastitsky

Page 42: Основы языка R

Значения из 2-го ряда 3-го столбца: > data[2, 3]

[1] 1.8

Весь 2-й ряд: > data[2, ]

Sex Weight Height 2 male 85 1.8

Весь 3-й столбец: > data[, 3]

[1] 1.75 1.80 1.68

Author: Sergey Mastitsky

Page 43: Основы языка R

Все данные для самцов: > data[data$Sex == "male", ]

Sex Weight Height

1 male 80 1.75

2 male 85 1.80

> data$Sex == "male"

[1] TRUE TRUE FALSE

Author: Sergey Mastitsky

Page 44: Основы языка R

Данные из 1-го и 3-го столбцов: > data[, c(1, 3)]

Sex Height

1 male 1.75

2 male 1.80

3 female 1.68

Author: Sergey Mastitsky

Page 45: Основы языка R

Полезные команды для больших таблиц: > head(data, n = 2)

Sex Weight Height

1 male 80 1.75

2 male 85 1.80

> tail(data, n = 2)

...

Author: Sergey Mastitsky

Page 46: Основы языка R

2.3. Среда R

Page 47: Основы языка R

Рабочее пространство

Page 48: Основы языка R

Рабочее пространство – часть памяти

компьютера, где хранятся все объекты,

созданные в ходе конкретной R-сессии

(временно, пока не будут сохранены!)

Проверка содержимого рабочего

пространства: > ls()

...

В RStudio имеется закладка “Environment”

Author: Sergey Mastitsky

Page 49: Основы языка R

Периодически стоит проводить «уборку»: > rm(i)

Для удаления всех объектов (осторожно!): > rm(list = ls())

В RStudio:

закладка “Environment”, кнопка “Clear All”

Author: Sergey Mastitsky

Page 50: Основы языка R

Сохранение текущего рабочего пространства (создает файл .Rdata в

текущей рабочей директории): > save.image()

В RStudio:

- Закладка “Environment”

- Кнопка “Save Workspace As…”

Author: Sergey Mastitsky

Page 51: Основы языка R

Рабочая директория – папка, из которой R по

умолчанию пытается загружать файлы (и

сохранять в нее)

Проверка пути к текущей рабочей папке: > getwd()

[1] "D:/DOCS"

Создание новой рабочей директории: > setwd("D:/DOCS/Analysis")

В RStudio:

Session/Set Working Directory/Choose Directory

Author: Sergey Mastitsky

Page 52: Основы языка R

Скрипты

Page 53: Основы языка R

Для выполнения нескольких

однотипных/специализированных команд

стоит сохранить их в виде скрипта Опция 1: функция source() – загружает

файл со скриптом и выполняет его

Опция 2: редактор скриптов в RStudio –

позволяет выполнять несколько команд

одновременно

Author: Sergey Mastitsky

Page 54: Основы языка R

Author: Sergey Mastitsky

Page 55: Основы языка R

Получение помощи

Page 56: Основы языка R

Имеется обширная встроенная справочная

система: > help.start()

или закладка Help в RStudio Справка по конкретной функции: > help(plot) # или просто

> ?plot

Справка по определенной теме: > help.search("correlation")

Справка по определенному пакету: > help(package = "name")

Author: Sergey Mastitsky

Page 57: Основы языка R

Расширения (пакеты)

Page 58: Основы языка R

Пакет – коллекция функций, созданных для

выполнения определенного класса задач, или

колекция таблиц с данными (см. закладку

Packages в RStudio)

Для загрузки (уже установленного) пакета: > library(package)

Инсталляция нового пакета (требуется Интернет-

соединение): > install.packages("имя_пакета")

Author: Sergey Mastitsky

Page 59: Основы языка R

> install.packages("ISwR")

> install.packages("HSAUR2")

Author: Sergey Mastitsky

Page 60: Основы языка R

Author: Sergey Mastitsky

Page 61: Основы языка R

Author: Sergey Mastitsky

Page 62: Основы языка R

Зайдите на страницу CRAN Task Views

и исследуйте ее содержимое

Зайдите на сайт Inside-R и исследуйте

список пакетов

Author: Sergey Mastitsky