setwd("C:\\Users\\JIRAGUHA\\Desktop\\AUCA\\R-PROGRAMING\\Assignment")

Assignment one: Importing data sets in R from different data sources

# 1. Importing data from csv file

data1 <- read.csv("C:\\Users\\JIRAGUHA\\Desktop\\AUCA\\R-PROGRAMING\\Assignment\\Dataset\\birthsample.csv")

# 2. Importing data from Excel
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.3
data2 <- read_excel("C:\\Users\\JIRAGUHA\\Desktop\\AUCA\\R-PROGRAMING\\Assignment\\Dataset\\Ubudehed.xlsx",sheet="JUVE")
## Warning: Expecting logical in I4638 / R4638C9: got 'GUKOSORA IZINA'
## Warning: Expecting logical in I4688 / R4688C9: got 'Yavutse le 22.06.2019'
## Warning: Expecting logical in I5254 / R5254C9: got 'UMWANA BABYAYE'
## Warning: Expecting logical in I5307 / R5307C9: got 'Yavutse me 26.5.2019'
## Warning: Expecting logical in I5359 / R5359C9: got 'URUGO RWARI RWARIMUKIYE MU
## KARERE KA GAKENKE NONE RWARAGARUTSE'
## Warning: Expecting logical in I5387 / R5387C9: got 'GUKOSORA IZINA'
## Warning: Expecting logical in I5538 / R5538C9: got 'GUKOSORA IZINA'
## Warning: Expecting logical in I5610 / R5610C9: got 'Gukosora izina'
## Warning: Expecting logical in I5619 / R5619C9: got 'YUBATSE URUGO RUSHYA'
## Warning: Expecting logical in I6183 / R6183C9: got 'YUBATSE URUGO RUSHYA'
## Warning: Expecting logical in I6840 / R6840C9: got 'Ni umumasera waje mubutumwa
## muri paruwasi ya Muhondo'
## Warning: Expecting logical in I6841 / R6841C9: got 'Ni umumasera waje mubutumwa
## muri paruwasi ya Muhondo'
## Warning: Expecting logical in I6843 / R6843C9: got 'Ni umumasera waje mubutumwa
## muri paruwasi ya Muhondo'
# 3. Importing data from Text file

data3 <- read.delim("C:\\Users\\JIRAGUHA\\Desktop\\AUCA\\R-PROGRAMING\\Assignment\\Dataset\\data in text.txt",header = TRUE)

# 4. Import from SPSS file
library(haven)
## Warning: package 'haven' was built under R version 4.5.3
data4 <- read_sav("C:\\Users\\JIRAGUHA\\Desktop\\AUCA\\R-PROGRAMING\\Assignment\\Dataset\\births_data.sav")


# 5. Import the Stata file

data4 <- read_dta("C:/Users/JIRAGUHA/Desktop/AUCA/R-PROGRAMING/Assignment/Dataset/Establishment Census Dataset 2023.dta")

Assignment two: Marging data set in R

df1<-read.csv("C:\\Users\\JIRAGUHA\\Desktop\\AUCA\\Python\\Processed\\Student Marks.csv")
df2<-read.csv("C:\\Users\\JIRAGUHA\\Desktop\\AUCA\\Python\\Processed\\Student_location.csv")

Merged_df<-merge(df1, df2, by = "Regno",all.y = TRUE) # Buy merge function i add location information on students performance data set using unique identifiers ( Regno or Registration number)
Merged_df
##     Regno  Name.x Gender.x Assign1.x Assign2.x Assign3.x MidTerm.x FinalExam.x
## 1  240001    John     Male       5.0       8.0         8        22          23
## 2  240002    Alex     Male       5.0       8.0         8        22          19
## 3  240003 Emmauel     Male       5.0       8.0         8        25          20
## 4  240004    Lucy   Female       4.5       9.0         9        27          16
## 5  240005  Stella   Female       5.0       9.0         9        29          17
## 6  240006   Elias     Male       4.5       9.0         9        27          10
## 7  240007  Fidele     Male       5.0       8.0        10        26          NA
## 8  240008   David     Male       5.0       8.0        10        26          23
## 9  240009  Kamara     Male       4.0       7.5        10        25          19
## 10 240010   Jonny   Female       4.0       7.5        10        22          24
## 11 240011   Becky   Female       4.0       7.5        10        22          31
## 12 240012  Justin     Male        NA       8.0         0        21          18
## 13 240013 Godfrey     Male       4.0       8.0         7        23          29
## 14 240014   Sonia   Female       5.0       8.0         6        27          32
## 15 240015   Grace   Female       5.0        NA         0        24          18
## 16 240016 Liliane   Female       2.0       9.0         5        24          29
## 17 240017 Richard     Male       5.0       9.0         9        27          30
## 18 240018 Faustin     Male       4.0       9.0         5        24          29
## 19 240019   Savio     Male       5.0       9.0         9        28          18
## 20 240020  Gisele   Female       5.0       9.0         9        27          23
## 21 240021    Ravi     Male       5.0       9.0         9        27          26
## 22 240022  Easter     Male       3.0       7.0         8        23          17
##     Name.y    Distict       Sector Gender.y Assign1.y Assign2.y Assign3.y
## 1     John   Bugesera      Gashora     Male       5.0       8.0         8
## 2     Alex   Bugesera      Gashora     Male       5.0       8.0         8
## 3  Emmauel   Bugesera      Gashora     Male       5.0       8.0         8
## 4     Lucy   Bugesera      Gashora   Female       4.5       9.0         9
## 5   Stella   Kicukiro       Niboye   Female       5.0       9.0         9
## 6    Elias   Kicukiro       Niboye     Male       4.5       9.0         9
## 7   Fidele   Kicukiro       Niboye     Male       5.0       8.0        10
## 8    David   Kicukiro       Niboye     Male       5.0       8.0        10
## 9   Kamara  Rwamagana       Rubona     Male       4.0       7.5        10
## 10   Jonny  Rwamagana       Rubona   Female       4.0       7.5        10
## 11   Becky  Rwamagana       Rubona   Female       4.0       7.5        10
## 12  Justin  Rwamagana       Rubona     Male        NA       8.0         0
## 13 Godfrey     Rusizi Gikundamvura     Male       4.0       8.0         7
## 14   Sonia     Rusizi Gikundamvura   Female       5.0       8.0         6
## 15   Grace     Rusizi      Gitambi   Female       5.0        NA         0
## 16 Liliane     Rusizi      Gitambi   Female       2.0       9.0         5
## 17 Richard     Nyanza   Busasamana     Male       5.0       9.0         9
## 18 Faustin     Nyanza   Busasamana     Male       4.0       9.0         5
## 19   Savio     Nyanza   Busasamana     Male       5.0       9.0         9
## 20  Gisele     Nyanza   Busasamana   Female       5.0       9.0         9
## 21    Ravi Nyamasheke       Shangi     Male       5.0       9.0         9
## 22  Easter Nyamasheke       Shangi     Male       3.0       7.0         8
##    MidTerm.y FinalExam.y
## 1         22          23
## 2         22          19
## 3         25          20
## 4         27          16
## 5         29          17
## 6         27          10
## 7         26          NA
## 8         26          23
## 9         25          19
## 10        22          24
## 11        22          31
## 12        21          18
## 13        23          29
## 14        27          32
## 15        24          18
## 16        24          29
## 17        27          30
## 18        24          29
## 19        28          18
## 20        27          23
## 21        27          26
## 22        23          17

Assignment three: Using Group_by(), %>%(), Select(), filter(), Arrange(),mutate() and rename()

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# the use of select()
data("iris")
Species_sepal_width<- iris %>%
  select(Sepal.Length, Sepal.Width) # This function keeps only the Species

Species_sepal_width
##     Sepal.Length Sepal.Width
## 1            5.1         3.5
## 2            4.9         3.0
## 3            4.7         3.2
## 4            4.6         3.1
## 5            5.0         3.6
## 6            5.4         3.9
## 7            4.6         3.4
## 8            5.0         3.4
## 9            4.4         2.9
## 10           4.9         3.1
## 11           5.4         3.7
## 12           4.8         3.4
## 13           4.8         3.0
## 14           4.3         3.0
## 15           5.8         4.0
## 16           5.7         4.4
## 17           5.4         3.9
## 18           5.1         3.5
## 19           5.7         3.8
## 20           5.1         3.8
## 21           5.4         3.4
## 22           5.1         3.7
## 23           4.6         3.6
## 24           5.1         3.3
## 25           4.8         3.4
## 26           5.0         3.0
## 27           5.0         3.4
## 28           5.2         3.5
## 29           5.2         3.4
## 30           4.7         3.2
## 31           4.8         3.1
## 32           5.4         3.4
## 33           5.2         4.1
## 34           5.5         4.2
## 35           4.9         3.1
## 36           5.0         3.2
## 37           5.5         3.5
## 38           4.9         3.6
## 39           4.4         3.0
## 40           5.1         3.4
## 41           5.0         3.5
## 42           4.5         2.3
## 43           4.4         3.2
## 44           5.0         3.5
## 45           5.1         3.8
## 46           4.8         3.0
## 47           5.1         3.8
## 48           4.6         3.2
## 49           5.3         3.7
## 50           5.0         3.3
## 51           7.0         3.2
## 52           6.4         3.2
## 53           6.9         3.1
## 54           5.5         2.3
## 55           6.5         2.8
## 56           5.7         2.8
## 57           6.3         3.3
## 58           4.9         2.4
## 59           6.6         2.9
## 60           5.2         2.7
## 61           5.0         2.0
## 62           5.9         3.0
## 63           6.0         2.2
## 64           6.1         2.9
## 65           5.6         2.9
## 66           6.7         3.1
## 67           5.6         3.0
## 68           5.8         2.7
## 69           6.2         2.2
## 70           5.6         2.5
## 71           5.9         3.2
## 72           6.1         2.8
## 73           6.3         2.5
## 74           6.1         2.8
## 75           6.4         2.9
## 76           6.6         3.0
## 77           6.8         2.8
## 78           6.7         3.0
## 79           6.0         2.9
## 80           5.7         2.6
## 81           5.5         2.4
## 82           5.5         2.4
## 83           5.8         2.7
## 84           6.0         2.7
## 85           5.4         3.0
## 86           6.0         3.4
## 87           6.7         3.1
## 88           6.3         2.3
## 89           5.6         3.0
## 90           5.5         2.5
## 91           5.5         2.6
## 92           6.1         3.0
## 93           5.8         2.6
## 94           5.0         2.3
## 95           5.6         2.7
## 96           5.7         3.0
## 97           5.7         2.9
## 98           6.2         2.9
## 99           5.1         2.5
## 100          5.7         2.8
## 101          6.3         3.3
## 102          5.8         2.7
## 103          7.1         3.0
## 104          6.3         2.9
## 105          6.5         3.0
## 106          7.6         3.0
## 107          4.9         2.5
## 108          7.3         2.9
## 109          6.7         2.5
## 110          7.2         3.6
## 111          6.5         3.2
## 112          6.4         2.7
## 113          6.8         3.0
## 114          5.7         2.5
## 115          5.8         2.8
## 116          6.4         3.2
## 117          6.5         3.0
## 118          7.7         3.8
## 119          7.7         2.6
## 120          6.0         2.2
## 121          6.9         3.2
## 122          5.6         2.8
## 123          7.7         2.8
## 124          6.3         2.7
## 125          6.7         3.3
## 126          7.2         3.2
## 127          6.2         2.8
## 128          6.1         3.0
## 129          6.4         2.8
## 130          7.2         3.0
## 131          7.4         2.8
## 132          7.9         3.8
## 133          6.4         2.8
## 134          6.3         2.8
## 135          6.1         2.6
## 136          7.7         3.0
## 137          6.3         3.4
## 138          6.4         3.1
## 139          6.0         3.0
## 140          6.9         3.1
## 141          6.7         3.1
## 142          6.9         3.1
## 143          5.8         2.7
## 144          6.8         3.2
## 145          6.7         3.3
## 146          6.7         3.0
## 147          6.3         2.5
## 148          6.5         3.0
## 149          6.2         3.4
## 150          5.9         3.0
# using group_by and %>%

iris %>%
  group_by(Species) %>%
  summarise(mean_sepal_length = mean(Sepal.Length)) # This function make a group of Species by Mean sepal length
## # A tibble: 3 × 2
##   Species    mean_sepal_length
##   <fct>                  <dbl>
## 1 setosa                  5.01
## 2 versicolor              5.94
## 3 virginica               6.59
# filter()

Setosa_Sepal_greater_5<-iris %>%
  filter(Species == "setosa", Sepal.Length > 5) # From the iris data set, keep only rows where the species is setosa AND the sepal length is greater than 5cm
Setosa_Sepal_greater_5
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1           5.1         3.5          1.4         0.2  setosa
## 2           5.4         3.9          1.7         0.4  setosa
## 3           5.4         3.7          1.5         0.2  setosa
## 4           5.8         4.0          1.2         0.2  setosa
## 5           5.7         4.4          1.5         0.4  setosa
## 6           5.4         3.9          1.3         0.4  setosa
## 7           5.1         3.5          1.4         0.3  setosa
## 8           5.7         3.8          1.7         0.3  setosa
## 9           5.1         3.8          1.5         0.3  setosa
## 10          5.4         3.4          1.7         0.2  setosa
## 11          5.1         3.7          1.5         0.4  setosa
## 12          5.1         3.3          1.7         0.5  setosa
## 13          5.2         3.5          1.5         0.2  setosa
## 14          5.2         3.4          1.4         0.2  setosa
## 15          5.4         3.4          1.5         0.4  setosa
## 16          5.2         4.1          1.5         0.1  setosa
## 17          5.5         4.2          1.4         0.2  setosa
## 18          5.5         3.5          1.3         0.2  setosa
## 19          5.1         3.4          1.5         0.2  setosa
## 20          5.1         3.8          1.9         0.4  setosa
## 21          5.1         3.8          1.6         0.2  setosa
## 22          5.3         3.7          1.5         0.2  setosa
# arrange()
iris_sorted<- iris %>%
  arrange(Species, desc(Petal.Length)) # Species sorted alphabetically and  Petal.Length sorted from biggest to smallest within each species
iris_sorted
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1            4.8         3.4          1.9         0.2     setosa
## 2            5.1         3.8          1.9         0.4     setosa
## 3            5.4         3.9          1.7         0.4     setosa
## 4            5.7         3.8          1.7         0.3     setosa
## 5            5.4         3.4          1.7         0.2     setosa
## 6            5.1         3.3          1.7         0.5     setosa
## 7            4.8         3.4          1.6         0.2     setosa
## 8            5.0         3.0          1.6         0.2     setosa
## 9            5.0         3.4          1.6         0.4     setosa
## 10           4.7         3.2          1.6         0.2     setosa
## 11           4.8         3.1          1.6         0.2     setosa
## 12           5.0         3.5          1.6         0.6     setosa
## 13           5.1         3.8          1.6         0.2     setosa
## 14           4.6         3.1          1.5         0.2     setosa
## 15           5.0         3.4          1.5         0.2     setosa
## 16           4.9         3.1          1.5         0.1     setosa
## 17           5.4         3.7          1.5         0.2     setosa
## 18           5.7         4.4          1.5         0.4     setosa
## 19           5.1         3.8          1.5         0.3     setosa
## 20           5.1         3.7          1.5         0.4     setosa
## 21           5.2         3.5          1.5         0.2     setosa
## 22           5.4         3.4          1.5         0.4     setosa
## 23           5.2         4.1          1.5         0.1     setosa
## 24           4.9         3.1          1.5         0.2     setosa
## 25           5.1         3.4          1.5         0.2     setosa
## 26           5.3         3.7          1.5         0.2     setosa
## 27           5.1         3.5          1.4         0.2     setosa
## 28           4.9         3.0          1.4         0.2     setosa
## 29           5.0         3.6          1.4         0.2     setosa
## 30           4.6         3.4          1.4         0.3     setosa
## 31           4.4         2.9          1.4         0.2     setosa
## 32           4.8         3.0          1.4         0.1     setosa
## 33           5.1         3.5          1.4         0.3     setosa
## 34           5.2         3.4          1.4         0.2     setosa
## 35           5.5         4.2          1.4         0.2     setosa
## 36           4.9         3.6          1.4         0.1     setosa
## 37           4.8         3.0          1.4         0.3     setosa
## 38           4.6         3.2          1.4         0.2     setosa
## 39           5.0         3.3          1.4         0.2     setosa
## 40           4.7         3.2          1.3         0.2     setosa
## 41           5.4         3.9          1.3         0.4     setosa
## 42           5.5         3.5          1.3         0.2     setosa
## 43           4.4         3.0          1.3         0.2     setosa
## 44           5.0         3.5          1.3         0.3     setosa
## 45           4.5         2.3          1.3         0.3     setosa
## 46           4.4         3.2          1.3         0.2     setosa
## 47           5.8         4.0          1.2         0.2     setosa
## 48           5.0         3.2          1.2         0.2     setosa
## 49           4.3         3.0          1.1         0.1     setosa
## 50           4.6         3.6          1.0         0.2     setosa
## 51           6.0         2.7          5.1         1.6 versicolor
## 52           6.7         3.0          5.0         1.7 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           6.3         2.5          4.9         1.5 versicolor
## 55           5.9         3.2          4.8         1.8 versicolor
## 56           6.8         2.8          4.8         1.4 versicolor
## 57           7.0         3.2          4.7         1.4 versicolor
## 58           6.3         3.3          4.7         1.6 versicolor
## 59           6.1         2.9          4.7         1.4 versicolor
## 60           6.1         2.8          4.7         1.2 versicolor
## 61           6.7         3.1          4.7         1.5 versicolor
## 62           6.5         2.8          4.6         1.5 versicolor
## 63           6.6         2.9          4.6         1.3 versicolor
## 64           6.1         3.0          4.6         1.4 versicolor
## 65           6.4         3.2          4.5         1.5 versicolor
## 66           5.7         2.8          4.5         1.3 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           6.2         2.2          4.5         1.5 versicolor
## 69           6.0         2.9          4.5         1.5 versicolor
## 70           5.4         3.0          4.5         1.5 versicolor
## 71           6.0         3.4          4.5         1.6 versicolor
## 72           6.7         3.1          4.4         1.4 versicolor
## 73           6.6         3.0          4.4         1.4 versicolor
## 74           6.3         2.3          4.4         1.3 versicolor
## 75           5.5         2.6          4.4         1.2 versicolor
## 76           6.4         2.9          4.3         1.3 versicolor
## 77           6.2         2.9          4.3         1.3 versicolor
## 78           5.9         3.0          4.2         1.5 versicolor
## 79           5.6         2.7          4.2         1.3 versicolor
## 80           5.7         3.0          4.2         1.2 versicolor
## 81           5.7         2.9          4.2         1.3 versicolor
## 82           5.8         2.7          4.1         1.0 versicolor
## 83           5.6         3.0          4.1         1.3 versicolor
## 84           5.7         2.8          4.1         1.3 versicolor
## 85           5.5         2.3          4.0         1.3 versicolor
## 86           6.0         2.2          4.0         1.0 versicolor
## 87           6.1         2.8          4.0         1.3 versicolor
## 88           5.5         2.5          4.0         1.3 versicolor
## 89           5.8         2.6          4.0         1.2 versicolor
## 90           5.2         2.7          3.9         1.4 versicolor
## 91           5.6         2.5          3.9         1.1 versicolor
## 92           5.8         2.7          3.9         1.2 versicolor
## 93           5.5         2.4          3.8         1.1 versicolor
## 94           5.5         2.4          3.7         1.0 versicolor
## 95           5.6         2.9          3.6         1.3 versicolor
## 96           5.0         2.0          3.5         1.0 versicolor
## 97           5.7         2.6          3.5         1.0 versicolor
## 98           4.9         2.4          3.3         1.0 versicolor
## 99           5.0         2.3          3.3         1.0 versicolor
## 100          5.1         2.5          3.0         1.1 versicolor
## 101          7.7         2.6          6.9         2.3  virginica
## 102          7.7         3.8          6.7         2.2  virginica
## 103          7.7         2.8          6.7         2.0  virginica
## 104          7.6         3.0          6.6         2.1  virginica
## 105          7.9         3.8          6.4         2.0  virginica
## 106          7.3         2.9          6.3         1.8  virginica
## 107          7.2         3.6          6.1         2.5  virginica
## 108          7.4         2.8          6.1         1.9  virginica
## 109          7.7         3.0          6.1         2.3  virginica
## 110          6.3         3.3          6.0         2.5  virginica
## 111          7.2         3.2          6.0         1.8  virginica
## 112          7.1         3.0          5.9         2.1  virginica
## 113          6.8         3.2          5.9         2.3  virginica
## 114          6.5         3.0          5.8         2.2  virginica
## 115          6.7         2.5          5.8         1.8  virginica
## 116          7.2         3.0          5.8         1.6  virginica
## 117          6.9         3.2          5.7         2.3  virginica
## 118          6.7         3.3          5.7         2.1  virginica
## 119          6.7         3.3          5.7         2.5  virginica
## 120          6.3         2.9          5.6         1.8  virginica
## 121          6.4         2.8          5.6         2.1  virginica
## 122          6.4         2.8          5.6         2.2  virginica
## 123          6.1         2.6          5.6         1.4  virginica
## 124          6.3         3.4          5.6         2.4  virginica
## 125          6.7         3.1          5.6         2.4  virginica
## 126          6.8         3.0          5.5         2.1  virginica
## 127          6.5         3.0          5.5         1.8  virginica
## 128          6.4         3.1          5.5         1.8  virginica
## 129          6.9         3.1          5.4         2.1  virginica
## 130          6.2         3.4          5.4         2.3  virginica
## 131          6.4         2.7          5.3         1.9  virginica
## 132          6.4         3.2          5.3         2.3  virginica
## 133          6.7         3.0          5.2         2.3  virginica
## 134          6.5         3.0          5.2         2.0  virginica
## 135          5.8         2.7          5.1         1.9  virginica
## 136          6.5         3.2          5.1         2.0  virginica
## 137          5.8         2.8          5.1         2.4  virginica
## 138          6.3         2.8          5.1         1.5  virginica
## 139          6.9         3.1          5.1         2.3  virginica
## 140          5.8         2.7          5.1         1.9  virginica
## 141          5.9         3.0          5.1         1.8  virginica
## 142          5.7         2.5          5.0         2.0  virginica
## 143          6.0         2.2          5.0         1.5  virginica
## 144          6.3         2.5          5.0         1.9  virginica
## 145          5.6         2.8          4.9         2.0  virginica
## 146          6.3         2.7          4.9         1.8  virginica
## 147          6.1         3.0          4.9         1.8  virginica
## 148          6.2         2.8          4.8         1.8  virginica
## 149          6.0         3.0          4.8         1.8  virginica
## 150          4.9         2.5          4.5         1.7  virginica
# mutate()

new_Sepal.Length<- iris %>%
  mutate(Sepal.Length = Sepal.Length * 10) # this function mutate() modifies an existing Sepal.Length column by multiplying by 10
new_Sepal.Length 
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 1             51         3.5          1.4         0.2     setosa
## 2             49         3.0          1.4         0.2     setosa
## 3             47         3.2          1.3         0.2     setosa
## 4             46         3.1          1.5         0.2     setosa
## 5             50         3.6          1.4         0.2     setosa
## 6             54         3.9          1.7         0.4     setosa
## 7             46         3.4          1.4         0.3     setosa
## 8             50         3.4          1.5         0.2     setosa
## 9             44         2.9          1.4         0.2     setosa
## 10            49         3.1          1.5         0.1     setosa
## 11            54         3.7          1.5         0.2     setosa
## 12            48         3.4          1.6         0.2     setosa
## 13            48         3.0          1.4         0.1     setosa
## 14            43         3.0          1.1         0.1     setosa
## 15            58         4.0          1.2         0.2     setosa
## 16            57         4.4          1.5         0.4     setosa
## 17            54         3.9          1.3         0.4     setosa
## 18            51         3.5          1.4         0.3     setosa
## 19            57         3.8          1.7         0.3     setosa
## 20            51         3.8          1.5         0.3     setosa
## 21            54         3.4          1.7         0.2     setosa
## 22            51         3.7          1.5         0.4     setosa
## 23            46         3.6          1.0         0.2     setosa
## 24            51         3.3          1.7         0.5     setosa
## 25            48         3.4          1.9         0.2     setosa
## 26            50         3.0          1.6         0.2     setosa
## 27            50         3.4          1.6         0.4     setosa
## 28            52         3.5          1.5         0.2     setosa
## 29            52         3.4          1.4         0.2     setosa
## 30            47         3.2          1.6         0.2     setosa
## 31            48         3.1          1.6         0.2     setosa
## 32            54         3.4          1.5         0.4     setosa
## 33            52         4.1          1.5         0.1     setosa
## 34            55         4.2          1.4         0.2     setosa
## 35            49         3.1          1.5         0.2     setosa
## 36            50         3.2          1.2         0.2     setosa
## 37            55         3.5          1.3         0.2     setosa
## 38            49         3.6          1.4         0.1     setosa
## 39            44         3.0          1.3         0.2     setosa
## 40            51         3.4          1.5         0.2     setosa
## 41            50         3.5          1.3         0.3     setosa
## 42            45         2.3          1.3         0.3     setosa
## 43            44         3.2          1.3         0.2     setosa
## 44            50         3.5          1.6         0.6     setosa
## 45            51         3.8          1.9         0.4     setosa
## 46            48         3.0          1.4         0.3     setosa
## 47            51         3.8          1.6         0.2     setosa
## 48            46         3.2          1.4         0.2     setosa
## 49            53         3.7          1.5         0.2     setosa
## 50            50         3.3          1.4         0.2     setosa
## 51            70         3.2          4.7         1.4 versicolor
## 52            64         3.2          4.5         1.5 versicolor
## 53            69         3.1          4.9         1.5 versicolor
## 54            55         2.3          4.0         1.3 versicolor
## 55            65         2.8          4.6         1.5 versicolor
## 56            57         2.8          4.5         1.3 versicolor
## 57            63         3.3          4.7         1.6 versicolor
## 58            49         2.4          3.3         1.0 versicolor
## 59            66         2.9          4.6         1.3 versicolor
## 60            52         2.7          3.9         1.4 versicolor
## 61            50         2.0          3.5         1.0 versicolor
## 62            59         3.0          4.2         1.5 versicolor
## 63            60         2.2          4.0         1.0 versicolor
## 64            61         2.9          4.7         1.4 versicolor
## 65            56         2.9          3.6         1.3 versicolor
## 66            67         3.1          4.4         1.4 versicolor
## 67            56         3.0          4.5         1.5 versicolor
## 68            58         2.7          4.1         1.0 versicolor
## 69            62         2.2          4.5         1.5 versicolor
## 70            56         2.5          3.9         1.1 versicolor
## 71            59         3.2          4.8         1.8 versicolor
## 72            61         2.8          4.0         1.3 versicolor
## 73            63         2.5          4.9         1.5 versicolor
## 74            61         2.8          4.7         1.2 versicolor
## 75            64         2.9          4.3         1.3 versicolor
## 76            66         3.0          4.4         1.4 versicolor
## 77            68         2.8          4.8         1.4 versicolor
## 78            67         3.0          5.0         1.7 versicolor
## 79            60         2.9          4.5         1.5 versicolor
## 80            57         2.6          3.5         1.0 versicolor
## 81            55         2.4          3.8         1.1 versicolor
## 82            55         2.4          3.7         1.0 versicolor
## 83            58         2.7          3.9         1.2 versicolor
## 84            60         2.7          5.1         1.6 versicolor
## 85            54         3.0          4.5         1.5 versicolor
## 86            60         3.4          4.5         1.6 versicolor
## 87            67         3.1          4.7         1.5 versicolor
## 88            63         2.3          4.4         1.3 versicolor
## 89            56         3.0          4.1         1.3 versicolor
## 90            55         2.5          4.0         1.3 versicolor
## 91            55         2.6          4.4         1.2 versicolor
## 92            61         3.0          4.6         1.4 versicolor
## 93            58         2.6          4.0         1.2 versicolor
## 94            50         2.3          3.3         1.0 versicolor
## 95            56         2.7          4.2         1.3 versicolor
## 96            57         3.0          4.2         1.2 versicolor
## 97            57         2.9          4.2         1.3 versicolor
## 98            62         2.9          4.3         1.3 versicolor
## 99            51         2.5          3.0         1.1 versicolor
## 100           57         2.8          4.1         1.3 versicolor
## 101           63         3.3          6.0         2.5  virginica
## 102           58         2.7          5.1         1.9  virginica
## 103           71         3.0          5.9         2.1  virginica
## 104           63         2.9          5.6         1.8  virginica
## 105           65         3.0          5.8         2.2  virginica
## 106           76         3.0          6.6         2.1  virginica
## 107           49         2.5          4.5         1.7  virginica
## 108           73         2.9          6.3         1.8  virginica
## 109           67         2.5          5.8         1.8  virginica
## 110           72         3.6          6.1         2.5  virginica
## 111           65         3.2          5.1         2.0  virginica
## 112           64         2.7          5.3         1.9  virginica
## 113           68         3.0          5.5         2.1  virginica
## 114           57         2.5          5.0         2.0  virginica
## 115           58         2.8          5.1         2.4  virginica
## 116           64         3.2          5.3         2.3  virginica
## 117           65         3.0          5.5         1.8  virginica
## 118           77         3.8          6.7         2.2  virginica
## 119           77         2.6          6.9         2.3  virginica
## 120           60         2.2          5.0         1.5  virginica
## 121           69         3.2          5.7         2.3  virginica
## 122           56         2.8          4.9         2.0  virginica
## 123           77         2.8          6.7         2.0  virginica
## 124           63         2.7          4.9         1.8  virginica
## 125           67         3.3          5.7         2.1  virginica
## 126           72         3.2          6.0         1.8  virginica
## 127           62         2.8          4.8         1.8  virginica
## 128           61         3.0          4.9         1.8  virginica
## 129           64         2.8          5.6         2.1  virginica
## 130           72         3.0          5.8         1.6  virginica
## 131           74         2.8          6.1         1.9  virginica
## 132           79         3.8          6.4         2.0  virginica
## 133           64         2.8          5.6         2.2  virginica
## 134           63         2.8          5.1         1.5  virginica
## 135           61         2.6          5.6         1.4  virginica
## 136           77         3.0          6.1         2.3  virginica
## 137           63         3.4          5.6         2.4  virginica
## 138           64         3.1          5.5         1.8  virginica
## 139           60         3.0          4.8         1.8  virginica
## 140           69         3.1          5.4         2.1  virginica
## 141           67         3.1          5.6         2.4  virginica
## 142           69         3.1          5.1         2.3  virginica
## 143           58         2.7          5.1         1.9  virginica
## 144           68         3.2          5.9         2.3  virginica
## 145           67         3.3          5.7         2.5  virginica
## 146           67         3.0          5.2         2.3  virginica
## 147           63         2.5          5.0         1.9  virginica
## 148           65         3.0          5.2         2.0  virginica
## 149           62         3.4          5.4         2.3  virginica
## 150           59         3.0          5.1         1.8  virginica
# rename()

renamed_Sepal.Length<- iris %>%
  rename(Sepal_Length = Sepal.Length) # Rename one column in iris from Sepal.Length as old name to Sepal_Length as new name.
renamed_Sepal.Length
##     Sepal_Length Sepal.Width Petal.Length Petal.Width    Species
## 1            5.1         3.5          1.4         0.2     setosa
## 2            4.9         3.0          1.4         0.2     setosa
## 3            4.7         3.2          1.3         0.2     setosa
## 4            4.6         3.1          1.5         0.2     setosa
## 5            5.0         3.6          1.4         0.2     setosa
## 6            5.4         3.9          1.7         0.4     setosa
## 7            4.6         3.4          1.4         0.3     setosa
## 8            5.0         3.4          1.5         0.2     setosa
## 9            4.4         2.9          1.4         0.2     setosa
## 10           4.9         3.1          1.5         0.1     setosa
## 11           5.4         3.7          1.5         0.2     setosa
## 12           4.8         3.4          1.6         0.2     setosa
## 13           4.8         3.0          1.4         0.1     setosa
## 14           4.3         3.0          1.1         0.1     setosa
## 15           5.8         4.0          1.2         0.2     setosa
## 16           5.7         4.4          1.5         0.4     setosa
## 17           5.4         3.9          1.3         0.4     setosa
## 18           5.1         3.5          1.4         0.3     setosa
## 19           5.7         3.8          1.7         0.3     setosa
## 20           5.1         3.8          1.5         0.3     setosa
## 21           5.4         3.4          1.7         0.2     setosa
## 22           5.1         3.7          1.5         0.4     setosa
## 23           4.6         3.6          1.0         0.2     setosa
## 24           5.1         3.3          1.7         0.5     setosa
## 25           4.8         3.4          1.9         0.2     setosa
## 26           5.0         3.0          1.6         0.2     setosa
## 27           5.0         3.4          1.6         0.4     setosa
## 28           5.2         3.5          1.5         0.2     setosa
## 29           5.2         3.4          1.4         0.2     setosa
## 30           4.7         3.2          1.6         0.2     setosa
## 31           4.8         3.1          1.6         0.2     setosa
## 32           5.4         3.4          1.5         0.4     setosa
## 33           5.2         4.1          1.5         0.1     setosa
## 34           5.5         4.2          1.4         0.2     setosa
## 35           4.9         3.1          1.5         0.2     setosa
## 36           5.0         3.2          1.2         0.2     setosa
## 37           5.5         3.5          1.3         0.2     setosa
## 38           4.9         3.6          1.4         0.1     setosa
## 39           4.4         3.0          1.3         0.2     setosa
## 40           5.1         3.4          1.5         0.2     setosa
## 41           5.0         3.5          1.3         0.3     setosa
## 42           4.5         2.3          1.3         0.3     setosa
## 43           4.4         3.2          1.3         0.2     setosa
## 44           5.0         3.5          1.6         0.6     setosa
## 45           5.1         3.8          1.9         0.4     setosa
## 46           4.8         3.0          1.4         0.3     setosa
## 47           5.1         3.8          1.6         0.2     setosa
## 48           4.6         3.2          1.4         0.2     setosa
## 49           5.3         3.7          1.5         0.2     setosa
## 50           5.0         3.3          1.4         0.2     setosa
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor
## 101          6.3         3.3          6.0         2.5  virginica
## 102          5.8         2.7          5.1         1.9  virginica
## 103          7.1         3.0          5.9         2.1  virginica
## 104          6.3         2.9          5.6         1.8  virginica
## 105          6.5         3.0          5.8         2.2  virginica
## 106          7.6         3.0          6.6         2.1  virginica
## 107          4.9         2.5          4.5         1.7  virginica
## 108          7.3         2.9          6.3         1.8  virginica
## 109          6.7         2.5          5.8         1.8  virginica
## 110          7.2         3.6          6.1         2.5  virginica
## 111          6.5         3.2          5.1         2.0  virginica
## 112          6.4         2.7          5.3         1.9  virginica
## 113          6.8         3.0          5.5         2.1  virginica
## 114          5.7         2.5          5.0         2.0  virginica
## 115          5.8         2.8          5.1         2.4  virginica
## 116          6.4         3.2          5.3         2.3  virginica
## 117          6.5         3.0          5.5         1.8  virginica
## 118          7.7         3.8          6.7         2.2  virginica
## 119          7.7         2.6          6.9         2.3  virginica
## 120          6.0         2.2          5.0         1.5  virginica
## 121          6.9         3.2          5.7         2.3  virginica
## 122          5.6         2.8          4.9         2.0  virginica
## 123          7.7         2.8          6.7         2.0  virginica
## 124          6.3         2.7          4.9         1.8  virginica
## 125          6.7         3.3          5.7         2.1  virginica
## 126          7.2         3.2          6.0         1.8  virginica
## 127          6.2         2.8          4.8         1.8  virginica
## 128          6.1         3.0          4.9         1.8  virginica
## 129          6.4         2.8          5.6         2.1  virginica
## 130          7.2         3.0          5.8         1.6  virginica
## 131          7.4         2.8          6.1         1.9  virginica
## 132          7.9         3.8          6.4         2.0  virginica
## 133          6.4         2.8          5.6         2.2  virginica
## 134          6.3         2.8          5.1         1.5  virginica
## 135          6.1         2.6          5.6         1.4  virginica
## 136          7.7         3.0          6.1         2.3  virginica
## 137          6.3         3.4          5.6         2.4  virginica
## 138          6.4         3.1          5.5         1.8  virginica
## 139          6.0         3.0          4.8         1.8  virginica
## 140          6.9         3.1          5.4         2.1  virginica
## 141          6.7         3.1          5.6         2.4  virginica
## 142          6.9         3.1          5.1         2.3  virginica
## 143          5.8         2.7          5.1         1.9  virginica
## 144          6.8         3.2          5.9         2.3  virginica
## 145          6.7         3.3          5.7         2.5  virginica
## 146          6.7         3.0          5.2         2.3  virginica
## 147          6.3         2.5          5.0         1.9  virginica
## 148          6.5         3.0          5.2         2.0  virginica
## 149          6.2         3.4          5.4         2.3  virginica
## 150          5.9         3.0          5.1         1.8  virginica

Assingiment four: trace and recover function for debuging in R

traceback() Function: It is a debugging tool is used to give all the information on how the function arrived at an error. It will display all the functions called before the error arrived. It displays the error during evaluations. The call stack is read from the function that was run(at the bottom) to the function that was running(at the top).

*recover() Function** :recover() statement is used as an error handler and not like the direct statement. In recover(), R prints the whole call stack and lets you select which function browser you would like to enter

Example tarcing

function_1 <- function(a){    #This function takes one argument a and adds 5 to it.It assumes a is numeric, since addition (+) only    a + 5                        works with numbers.
}


function_2 <- function(b) {
 function_1(b)
}

# Calling function 
##This will give an error, because it expect,input must be numeric, not character
function_2("s")
## NULL
# Call traceback()
traceback()
## No traceback available

Example for recover()

# Create a function with a hidden bug
# Function with intentional errors for debugging demonstration
analyze_sales <- function(sales_data, discount_rate = 0.1) {
  
  # Error 1: Missing input validation
  total_sales <- sum(sales_data$revenue)
  
  # Error 2: Incorrect column name
  average_price <- mean(sales_data$price)  # Column might not exist
  
  # Error 3: Logical error in discount calculation
  discounted_revenue <- sales_data$revenue * (1 + discount_rate)  # Should be subtraction
  
  # Error 4: Division by zero potential
  profit_margin <- (sales_data$profit / sales_data$revenue) * 100
  
  # Error 5: Invalid function call
  sales_trend <- predict_sales(sales_data)  # Function doesn't exist
  
  return(list(
    total_sales = total_sales,
    average_price = average_price,
    discounted_revenue = discounted_revenue,
    profit_margin = profit_margin,
    sales_trend = sales_trend
  ))
}

Assignment five: The use of: sapply(), mapply(),vapply(), lapply()

# sapply 

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

sapply(x, function(i) i^2) # in R applies a function to each element of a vector or each column of a data frame and returns a simplified result.
## [1]  1  4  9 16
# mapply

x <- c(1, 2, 3)
y <- c(10, 20, 30)
mapply(function(a, b) a + b, x, y) # mapply() matches elements by position and simplifies operations
## [1] 11 22 33
# lapply()

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

lapply(x, function(i) i^2) # his code in R does two things: it creates a vector and then applies a function to each element
## [[1]]
## [1] 1
## 
## [[2]]
## [1] 4
## 
## [[3]]
## [1] 9
## 
## [[4]]
## [1] 16
# mapply

x <- c(1, 2, 3)
y <- c(10, 20, 30)
mapply(function(a, b) a + b, x, y) # mapply() takes matching elements from multiple vectors and applies a function to them together.
## [1] 11 22 33

Assignment six: Building my own R function

# Building of max_min function to calculate max and minimum values in a vector
max_min <- function(x){

  maximum <- max(x)
  minimum <- min(x)

  result <- list(
    Maximum = maximum,
    Minimum = minimum
  )
return(result) 
} # This is my function that calculates the maximum and minimum values of a vector
numbers <- c(5, 10, 2, 18, 7)

max_min(numbers)
## $Maximum
## [1] 18
## 
## $Minimum
## [1] 2