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