# Полезные команды

getwd() # узнать путь до текущей директории
ls() # список существующих переменных
sessionInfo() # настройки текущей сессии, включая версии установленных пакетов

# Способы создания векторов и операции с ними
# Обратите внимание на поведение разных по длине векторов при операциях с ними

x <- 1:4
x
x + 2
y <- 5:8
y
x + y
b <- 2:3
b
x + b
d <- 1:3
d
x + d

# в векторе y заменить элемент с значением 6 на число 100
y <- 5:8
y[which(y == 6)] <- 100
y[y == 6] <- 100
y

# Подключение встроенных наборов данных
data()

head(airquality)
?airquality # в вкладке Help появляется описание столбцов встроенных наборов данных
table(airquality$Month)

# Оставить месяца НЕ 7 и НЕ 8 в airquality

a <- airquality[!(airquality$Month %in% c(7,8)), ]
dim(airquality)
table(a$Month)

# Оставить строки, где Ozone более 40 И только майские наблюдения 

airquality[airquality$Ozone > 40 & airquality$Month == 5, ]

# Работа с пропущенными значениями

mean(airquality$Ozone, na.rm = T)
?mean
dim(airquality)
a <- na.omit(airquality) # убрать ВСЕ строки в таблице, где хотя бы в одном столбце есть NA
dim(a)
mean(a$Ozone)
is.na(airquality$Ozone)
sum(is.na(airquality$Ozone))
anyNA(airquality$Ozone) # проверить, есть ли хотя бы одно NA

# R base graphics

attach(iris) # "загрузить" встроенный набор данных, чтобы можно было сразу указывать имена столбцов, без указания имени набора данных

# Гистограмма 

hist(Sepal.Length)
hist(Sepal.Length, breaks = 20) # важный параметр - ширина бина

# Точковая диаграмма или диаграмма рассеяния

plot(Sepal.Length, Petal.Length,
     xlab = 'Sepal length, cm',
     ylab = 'Petal length, cm',
     main = 'Petal vs Sepal lengths',
     las = 1, # ориентация подписей засечек по ОУ
     cex = 1.2, # размер точек
     cex.lab = 1.5, # размер шрифта подписи осей
     cex.axis = 1.1, # размер шрифта подписей осей
     cex.main = 2, # размер шрифта названия графика
#    xlim = c(4, 8), # ограничения значений по оси х (есть аналогичный ylim)
     col = Species, # столбец, по которому окрашиваются точки
     pch = 16) # форма точек

legend(x = 4.5, y = 7, legend = levels(Species), 
       col = 1:3, pch = 16)

attach(iris)

plot(Sepal.Length, Petal.Length, col = Species)

# Попарные точковые диаграммы 
pairs(iris, col = iris$Species)

# Боксплот, ящик с усами, диаграмма размаха
boxplot(Sepal.Length ~ Species,
        notch = T)

detach(iris) # "отключить" "простое" обращение к набору данных

mtcars
head(mtcars)

table(mtcars$cyl)

# Столбчатая диаграмма 

barplot(table(mtcars$cyl))

# Сэмплирование данных

set.seed(123)
sample(1:30, 10)

dim(mtcars)

head(mtcars)

set.seed(123)
mtcars[sample(1:32, 10), ]
mtcars[c(31,15,19), ]

rnorm(20, mean = 3, sd = 2)
?rnorm
