## Подключение библиотек, загрузка файлов



#Для выполнения задания, необходимо подключить следующие пакеты:
library(caret)
## Загрузка требуемого пакета: ggplot2
## Загрузка требуемого пакета: lattice
library(ggplot2)
library(lattice)
library(mice)
## 
## Присоединяю пакет: 'mice'
## Следующий объект скрыт от 'package:stats':
## 
##     filter
## Следующие объекты скрыты от 'package:base':
## 
##     cbind, rbind
#Указываем путь
setwd("C:/Users/79881/Documents")
#Задание 1:Задание 1. Очистить данные с использованием функции is.na()
 vec1<-c(1:5,NA,NA,19)
 clearvec1<-is.na(vec1)
vec1[!clearvec1]
## [1]  1  2  3  4  5 19
#Задание 2. Сгенерировать таблицу данных с числовыми и текстовые столбцами. Очистить данные с помощью функции complete.cases()
tab1<- c("a", "b", NA, "d", NA, "f","d","e","NA")
tab2<-c(1,6,NA,14,NA,NA,NA,29,31)
perfect <- complete.cases(tab1, tab2)
perfect
## [1]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE
tab1[perfect]
## [1] "a"  "b"  "d"  "e"  "NA"
tab2[perfect]
## [1]  1  6 14 29 31
#Задание 3. Сгенерировать числовую таблицу данных с пропусками. С использованием функции preProcess из пакета caret заполнить пропуски предсказанными значениями (среднее,медиана)

# Для выполнения данного задания, нужен пакет caret и какой-нибудь набор данных, к примеру, встроенный набор данных air quality

library(caret)
 str(airquality)
## 'data.frame':    153 obs. of  6 variables:
##  $ Ozone  : int  41 36 12 18 NA 28 23 19 8 NA ...
##  $ Solar.R: int  190 118 149 313 NA NA 299 99 19 194 ...
##  $ Wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
##  $ Temp   : int  67 72 74 62 56 66 65 59 61 69 ...
##  $ Month  : int  5 5 5 5 5 5 5 5 5 5 ...
##  $ Day    : int  1 2 3 4 5 6 7 8 9 10 ...
 #'data.frame': 153 obs. of  6 variables:
 #$ Ozone  : int  41 36 12 18 NA 28 23 19 8 NA ...
 #$ Solar.R: int  190 118 149 313 NA NA 299 99 19 194 ...
 #$ Wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
 #$ Temp   : int  67 72 74 62 56 66 65 59 61 69 ...
 #$ Month  : int  5 5 5 5 5 5 5 5 5 5 ...
 #$ Day    : int  1 2 3 4 5 6 7 8 9 10 ...
 
 
 PrePro <- preProcess(airquality, method = 'medianImpute')
 aird <- predict(PrePro, airquality)
 aird
##     Ozone Solar.R Wind Temp Month Day
## 1    41.0     190  7.4   67     5   1
## 2    36.0     118  8.0   72     5   2
## 3    12.0     149 12.6   74     5   3
## 4    18.0     313 11.5   62     5   4
## 5    31.5     205 14.3   56     5   5
## 6    28.0     205 14.9   66     5   6
## 7    23.0     299  8.6   65     5   7
## 8    19.0      99 13.8   59     5   8
## 9     8.0      19 20.1   61     5   9
## 10   31.5     194  8.6   69     5  10
## 11    7.0     205  6.9   74     5  11
## 12   16.0     256  9.7   69     5  12
## 13   11.0     290  9.2   66     5  13
## 14   14.0     274 10.9   68     5  14
## 15   18.0      65 13.2   58     5  15
## 16   14.0     334 11.5   64     5  16
## 17   34.0     307 12.0   66     5  17
## 18    6.0      78 18.4   57     5  18
## 19   30.0     322 11.5   68     5  19
## 20   11.0      44  9.7   62     5  20
## 21    1.0       8  9.7   59     5  21
## 22   11.0     320 16.6   73     5  22
## 23    4.0      25  9.7   61     5  23
## 24   32.0      92 12.0   61     5  24
## 25   31.5      66 16.6   57     5  25
## 26   31.5     266 14.9   58     5  26
## 27   31.5     205  8.0   57     5  27
## 28   23.0      13 12.0   67     5  28
## 29   45.0     252 14.9   81     5  29
## 30  115.0     223  5.7   79     5  30
## 31   37.0     279  7.4   76     5  31
## 32   31.5     286  8.6   78     6   1
## 33   31.5     287  9.7   74     6   2
## 34   31.5     242 16.1   67     6   3
## 35   31.5     186  9.2   84     6   4
## 36   31.5     220  8.6   85     6   5
## 37   31.5     264 14.3   79     6   6
## 38   29.0     127  9.7   82     6   7
## 39   31.5     273  6.9   87     6   8
## 40   71.0     291 13.8   90     6   9
## 41   39.0     323 11.5   87     6  10
## 42   31.5     259 10.9   93     6  11
## 43   31.5     250  9.2   92     6  12
## 44   23.0     148  8.0   82     6  13
## 45   31.5     332 13.8   80     6  14
## 46   31.5     322 11.5   79     6  15
## 47   21.0     191 14.9   77     6  16
## 48   37.0     284 20.7   72     6  17
## 49   20.0      37  9.2   65     6  18
## 50   12.0     120 11.5   73     6  19
## 51   13.0     137 10.3   76     6  20
## 52   31.5     150  6.3   77     6  21
## 53   31.5      59  1.7   76     6  22
## 54   31.5      91  4.6   76     6  23
## 55   31.5     250  6.3   76     6  24
## 56   31.5     135  8.0   75     6  25
## 57   31.5     127  8.0   78     6  26
## 58   31.5      47 10.3   73     6  27
## 59   31.5      98 11.5   80     6  28
## 60   31.5      31 14.9   77     6  29
## 61   31.5     138  8.0   83     6  30
## 62  135.0     269  4.1   84     7   1
## 63   49.0     248  9.2   85     7   2
## 64   32.0     236  9.2   81     7   3
## 65   31.5     101 10.9   84     7   4
## 66   64.0     175  4.6   83     7   5
## 67   40.0     314 10.9   83     7   6
## 68   77.0     276  5.1   88     7   7
## 69   97.0     267  6.3   92     7   8
## 70   97.0     272  5.7   92     7   9
## 71   85.0     175  7.4   89     7  10
## 72   31.5     139  8.6   82     7  11
## 73   10.0     264 14.3   73     7  12
## 74   27.0     175 14.9   81     7  13
## 75   31.5     291 14.9   91     7  14
## 76    7.0      48 14.3   80     7  15
## 77   48.0     260  6.9   81     7  16
## 78   35.0     274 10.3   82     7  17
## 79   61.0     285  6.3   84     7  18
## 80   79.0     187  5.1   87     7  19
## 81   63.0     220 11.5   85     7  20
## 82   16.0       7  6.9   74     7  21
## 83   31.5     258  9.7   81     7  22
## 84   31.5     295 11.5   82     7  23
## 85   80.0     294  8.6   86     7  24
## 86  108.0     223  8.0   85     7  25
## 87   20.0      81  8.6   82     7  26
## 88   52.0      82 12.0   86     7  27
## 89   82.0     213  7.4   88     7  28
## 90   50.0     275  7.4   86     7  29
## 91   64.0     253  7.4   83     7  30
## 92   59.0     254  9.2   81     7  31
## 93   39.0      83  6.9   81     8   1
## 94    9.0      24 13.8   81     8   2
## 95   16.0      77  7.4   82     8   3
## 96   78.0     205  6.9   86     8   4
## 97   35.0     205  7.4   85     8   5
## 98   66.0     205  4.6   87     8   6
## 99  122.0     255  4.0   89     8   7
## 100  89.0     229 10.3   90     8   8
## 101 110.0     207  8.0   90     8   9
## 102  31.5     222  8.6   92     8  10
## 103  31.5     137 11.5   86     8  11
## 104  44.0     192 11.5   86     8  12
## 105  28.0     273 11.5   82     8  13
## 106  65.0     157  9.7   80     8  14
## 107  31.5      64 11.5   79     8  15
## 108  22.0      71 10.3   77     8  16
## 109  59.0      51  6.3   79     8  17
## 110  23.0     115  7.4   76     8  18
## 111  31.0     244 10.9   78     8  19
## 112  44.0     190 10.3   78     8  20
## 113  21.0     259 15.5   77     8  21
## 114   9.0      36 14.3   72     8  22
## 115  31.5     255 12.6   75     8  23
## 116  45.0     212  9.7   79     8  24
## 117 168.0     238  3.4   81     8  25
## 118  73.0     215  8.0   86     8  26
## 119  31.5     153  5.7   88     8  27
## 120  76.0     203  9.7   97     8  28
## 121 118.0     225  2.3   94     8  29
## 122  84.0     237  6.3   96     8  30
## 123  85.0     188  6.3   94     8  31
## 124  96.0     167  6.9   91     9   1
## 125  78.0     197  5.1   92     9   2
## 126  73.0     183  2.8   93     9   3
## 127  91.0     189  4.6   93     9   4
## 128  47.0      95  7.4   87     9   5
## 129  32.0      92 15.5   84     9   6
## 130  20.0     252 10.9   80     9   7
## 131  23.0     220 10.3   78     9   8
## 132  21.0     230 10.9   75     9   9
## 133  24.0     259  9.7   73     9  10
## 134  44.0     236 14.9   81     9  11
## 135  21.0     259 15.5   76     9  12
## 136  28.0     238  6.3   77     9  13
## 137   9.0      24 10.9   71     9  14
## 138  13.0     112 11.5   71     9  15
## 139  46.0     237  6.9   78     9  16
## 140  18.0     224 13.8   67     9  17
## 141  13.0      27 10.3   76     9  18
## 142  24.0     238 10.3   68     9  19
## 143  16.0     201  8.0   82     9  20
## 144  13.0     238 12.6   64     9  21
## 145  23.0      14  9.2   71     9  22
## 146  36.0     139 10.3   81     9  23
## 147   7.0      49 10.3   69     9  24
## 148  14.0      20 16.6   63     9  25
## 149  30.0     193  6.9   70     9  26
## 150  31.5     145 13.2   77     9  27
## 151  14.0     191 14.3   75     9  28
## 152  18.0     131  8.0   76     9  29
## 153  20.0     223 11.5   68     9  30
#Задание 4. Сгенерировать два числовых набора данных, добавить в них выбросы. С использованием функции boxplot обнаружить выбросы и удалить их.

# Для выполнения данного задания, будем использовать предлагаемый набор данных mtcars
# Сначало добавим выбросы в датафрейм.
str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
cars1 <- cars[1:20,]
dizinfo <- data.frame(speed=c(15:20), dist=c(160:165))
cars2 <- rbind(cars1,dizinfo)
#Обозначим рисунок 1 - значения, включающие выбросы
par(mfrow=c(1, 2))
plot(cars2$speed, cars2$dist, xlim=c(0, 30), ylim=c(0, 200), main="С выбросами", xlab="Скорость", ylab="Дистанция", pch=".", col="red", cex=3)
abline(lm(dist ~ speed, data=cars2), col="blue", lwd=3, lty=2)

# Теперь обозначим рисунок 2 - значения, НЕ включающие выбросы
plot(cars1$speed, cars1$dist, xlim=c(0, 30), ylim=c(0, 200), main="Без выбросов", xlab="Скорость", ylab="Дистанция", pch=".", col="red", cex=3)
abline(lm(dist ~ speed, data=cars1), col="blue", lwd=3, lty=2)

#Задание 5. Сгенерируйте таблицу данных, в которой дублируются строки. Удалите строки с использованием функций unique(), duplicated(). Сравните результаты

#1) Сформируем таблицу данных
x <- c(rep(4,6),rep(1,9),rep(-2,4))
y <- c(rep(2,9),rep(2,8),rep(-9,2))

also <- data.frame(x,y)
duplicated(also)
##  [1] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [13]  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE
# теперь попробуем разные вариации задания
also[duplicated(also),]
##     x  y
## 2   4  2
## 3   4  2
## 4   4  2
## 5   4  2
## 6   4  2
## 8   1  2
## 9   1  2
## 10  1  2
## 11  1  2
## 12  1  2
## 13  1  2
## 14  1  2
## 15  1  2
## 17 -2  2
## 19 -2 -9
unique(also)
##     x  y
## 1   4  2
## 7   1  2
## 16 -2  2
## 18 -2 -9
unique(!also)
##          x     y
## [1,] FALSE FALSE
also[!duplicated(also),]
##     x  y
## 1   4  2
## 7   1  2
## 16 -2  2
## 18 -2 -9
#Задание 6.Обработать пропуски в данных с использованием пакета mice.

library(mice)
# Для выполнения этого задания будем использовать уже имеющийся набор данных - air quality.
head(airquality)
##   Ozone Solar.R Wind Temp Month Day
## 1    41     190  7.4   67     5   1
## 2    36     118  8.0   72     5   2
## 3    12     149 12.6   74     5   3
## 4    18     313 11.5   62     5   4
## 5    NA      NA 14.3   56     5   5
## 6    28      NA 14.9   66     5   6
df <- airquality
df1<- mice(df)
## 
##  iter imp variable
##   1   1  Ozone  Solar.R
##   1   2  Ozone  Solar.R
##   1   3  Ozone  Solar.R
##   1   4  Ozone  Solar.R
##   1   5  Ozone  Solar.R
##   2   1  Ozone  Solar.R
##   2   2  Ozone  Solar.R
##   2   3  Ozone  Solar.R
##   2   4  Ozone  Solar.R
##   2   5  Ozone  Solar.R
##   3   1  Ozone  Solar.R
##   3   2  Ozone  Solar.R
##   3   3  Ozone  Solar.R
##   3   4  Ozone  Solar.R
##   3   5  Ozone  Solar.R
##   4   1  Ozone  Solar.R
##   4   2  Ozone  Solar.R
##   4   3  Ozone  Solar.R
##   4   4  Ozone  Solar.R
##   4   5  Ozone  Solar.R
##   5   1  Ozone  Solar.R
##   5   2  Ozone  Solar.R
##   5   3  Ozone  Solar.R
##   5   4  Ozone  Solar.R
##   5   5  Ozone  Solar.R
#Теперь, когда мы имеем разобранный пресет данных, попробуем его собрать обратно.
df1<- complete(df1)
summary(df1)
##      Ozone           Solar.R           Wind             Temp      
##  Min.   :  1.00   Min.   :  7.0   Min.   : 1.700   Min.   :56.00  
##  1st Qu.: 18.00   1st Qu.:115.0   1st Qu.: 7.400   1st Qu.:72.00  
##  Median : 30.00   Median :197.0   Median : 9.700   Median :79.00  
##  Mean   : 41.03   Mean   :185.1   Mean   : 9.958   Mean   :77.88  
##  3rd Qu.: 59.00   3rd Qu.:258.0   3rd Qu.:11.500   3rd Qu.:85.00  
##  Max.   :168.00   Max.   :334.0   Max.   :20.700   Max.   :97.00  
##      Month            Day      
##  Min.   :5.000   Min.   : 1.0  
##  1st Qu.:6.000   1st Qu.: 8.0  
##  Median :7.000   Median :16.0  
##  Mean   :6.993   Mean   :15.8  
##  3rd Qu.:8.000   3rd Qu.:23.0  
##  Max.   :9.000   Max.   :31.0
#Задание 7. Разобрать пример с мультиколлинеарностью.
#1) Сформируем таблицу данных
z <- c(rep(1,6),rep(1,4),rep(-3,4))
v <- c(rep(2,9),rep(2,2),rep(-9,3))

buba <- data.frame(z,v)
duplicated(buba)
##  [1] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
## [13]  TRUE  TRUE
# теперь мультиколлинеарность
buba[duplicated(buba),]
##     z  v
## 2   1  2
## 3   1  2
## 4   1  2
## 5   1  2
## 6   1  2
## 7   1  2
## 8   1  2
## 9   1  2
## 10  1  2
## 13 -3 -9
## 14 -3 -9
buba[!duplicated(buba),]
##     z  v
## 1   1  2
## 11 -3  2
## 12 -3 -9
СПАСИБО ЗА ВНИМАНИЕ!