Logical Operators:
- Use logical operations to get R to agree that “two plus two equals 5” is FALSE.
print(paste("two plus two equals 5 is",(2+2==5)&&true ))
## [1] "two plus two equals 5 is FALSE"
- Use logical operations to test whether 8 ^ 13 is less than 15 ^ 9.
print(paste("8 ^ 13 is less than 15 ^ 9 is",(8 ^ 13 < 15 ^ 9)&&true))
## [1] "8 ^ 13 is less than 15 ^ 9 is FALSE"
Variables:
- Create a variable called potato whose value corresponds to the number of potatoes you’ve eaten in the last week. Or something equally ridiculous. Print out the value of potato.
potato = 16
print(paste("I have eaten ", potato," potato last week"))
## [1] "I have eaten 16 potato last week"
- Calculate the square root of potato using the sqrt() function. Print out the value of potato again to verify that the value of potato hasn’t changed.
sqrtpotato = sqrt(potato)
print(paste("The square root value of potatoes is", sqrt(potato)))
## [1] "The square root value of potatoes is 4"
print(paste("The value of potato is", potato))
## [1] "The value of potato is 16"
- Reassign the value of potato to potato * 2. Print out the new value of potato to verify that it has changed.
potato= potato *2
print(paste("Now the value of potato is", potato))
## [1] "Now the value of potato is 32"
- Try making a character (string) variable and a logical variable . Try creating a variable with a “missing” value NA. You can call these variables whatever you would like. Use class(variablename) to make sure they are the right type of variable.
laptop="dell"
class(laptop)
## [1] "character"
isthin= 15<13
isthin
## [1] FALSE
class(isthin)
## [1] "logical"
size= NA
size
## [1] NA
class(size)
## [1] "logical"
Vectors:
- Create a numeric vector with three elements using c().
numvector=c(1,2,3)
print(numvector)
## [1] 1 2 3
- Create a character vector with three elements using c().
charvector=c("a","b","c")
print(charvector)
## [1] "a" "b" "c"
- Create a numeric vector called age whose elements contain the ages of three people you know, where the names of each element correspond to the names of those people.
age=c(20,21,22)
names(age)=c("adam","alice","amy")
age
## adam alice amy
## 20 21 22
- Use “indexing by number” to get R to print out the first element of one of the vectors you created in the last questions.
age[1]
## adam
## 20
- Use logical indexing to return all the ages of all people in age greater than 20.
age[age>20]
## alice amy
## 21 22
- Use indexing by name to return the age of one of the people whose ages you’ve stored in age
age["alice"]
## alice
## 21
Matrices:
Dataframes:
- Load the airquality dataset.
- Use the $ method to print out the Wind variable in airquality.
- Print out the third element of the Wind variable.
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
## 7 23 299 8.6 65 5 7
## 8 19 99 13.8 59 5 8
## 9 8 19 20.1 61 5 9
## 10 NA 194 8.6 69 5 10
## 11 7 NA 6.9 74 5 11
## 12 16 256 9.7 69 5 12
## 13 11 290 9.2 66 5 13
## 14 14 274 10.9 68 5 14
## 15 18 65 13.2 58 5 15
## 16 14 334 11.5 64 5 16
## 17 34 307 12.0 66 5 17
## 18 6 78 18.4 57 5 18
## 19 30 322 11.5 68 5 19
## 20 11 44 9.7 62 5 20
## 21 1 8 9.7 59 5 21
## 22 11 320 16.6 73 5 22
## 23 4 25 9.7 61 5 23
## 24 32 92 12.0 61 5 24
## 25 NA 66 16.6 57 5 25
## 26 NA 266 14.9 58 5 26
## 27 NA NA 8.0 57 5 27
## 28 23 13 12.0 67 5 28
## 29 45 252 14.9 81 5 29
## 30 115 223 5.7 79 5 30
## 31 37 279 7.4 76 5 31
## 32 NA 286 8.6 78 6 1
## 33 NA 287 9.7 74 6 2
## 34 NA 242 16.1 67 6 3
## 35 NA 186 9.2 84 6 4
## 36 NA 220 8.6 85 6 5
## 37 NA 264 14.3 79 6 6
## 38 29 127 9.7 82 6 7
## 39 NA 273 6.9 87 6 8
## 40 71 291 13.8 90 6 9
## 41 39 323 11.5 87 6 10
## 42 NA 259 10.9 93 6 11
## 43 NA 250 9.2 92 6 12
## 44 23 148 8.0 82 6 13
## 45 NA 332 13.8 80 6 14
## 46 NA 322 11.5 79 6 15
## 47 21 191 14.9 77 6 16
## 48 37 284 20.7 72 6 17
## 49 20 37 9.2 65 6 18
## 50 12 120 11.5 73 6 19
## 51 13 137 10.3 76 6 20
## 52 NA 150 6.3 77 6 21
## 53 NA 59 1.7 76 6 22
## 54 NA 91 4.6 76 6 23
## 55 NA 250 6.3 76 6 24
## 56 NA 135 8.0 75 6 25
## 57 NA 127 8.0 78 6 26
## 58 NA 47 10.3 73 6 27
## 59 NA 98 11.5 80 6 28
## 60 NA 31 14.9 77 6 29
## 61 NA 138 8.0 83 6 30
## 62 135 269 4.1 84 7 1
## 63 49 248 9.2 85 7 2
## 64 32 236 9.2 81 7 3
## 65 NA 101 10.9 84 7 4
## 66 64 175 4.6 83 7 5
## 67 40 314 10.9 83 7 6
## 68 77 276 5.1 88 7 7
## 69 97 267 6.3 92 7 8
## 70 97 272 5.7 92 7 9
## 71 85 175 7.4 89 7 10
## 72 NA 139 8.6 82 7 11
## 73 10 264 14.3 73 7 12
## 74 27 175 14.9 81 7 13
## 75 NA 291 14.9 91 7 14
## 76 7 48 14.3 80 7 15
## 77 48 260 6.9 81 7 16
## 78 35 274 10.3 82 7 17
## 79 61 285 6.3 84 7 18
## 80 79 187 5.1 87 7 19
## 81 63 220 11.5 85 7 20
## 82 16 7 6.9 74 7 21
## 83 NA 258 9.7 81 7 22
## 84 NA 295 11.5 82 7 23
## 85 80 294 8.6 86 7 24
## 86 108 223 8.0 85 7 25
## 87 20 81 8.6 82 7 26
## 88 52 82 12.0 86 7 27
## 89 82 213 7.4 88 7 28
## 90 50 275 7.4 86 7 29
## 91 64 253 7.4 83 7 30
## 92 59 254 9.2 81 7 31
## 93 39 83 6.9 81 8 1
## 94 9 24 13.8 81 8 2
## 95 16 77 7.4 82 8 3
## 96 78 NA 6.9 86 8 4
## 97 35 NA 7.4 85 8 5
## 98 66 NA 4.6 87 8 6
## 99 122 255 4.0 89 8 7
## 100 89 229 10.3 90 8 8
## 101 110 207 8.0 90 8 9
## 102 NA 222 8.6 92 8 10
## 103 NA 137 11.5 86 8 11
## 104 44 192 11.5 86 8 12
## 105 28 273 11.5 82 8 13
## 106 65 157 9.7 80 8 14
## 107 NA 64 11.5 79 8 15
## 108 22 71 10.3 77 8 16
## 109 59 51 6.3 79 8 17
## 110 23 115 7.4 76 8 18
## 111 31 244 10.9 78 8 19
## 112 44 190 10.3 78 8 20
## 113 21 259 15.5 77 8 21
## 114 9 36 14.3 72 8 22
## 115 NA 255 12.6 75 8 23
## 116 45 212 9.7 79 8 24
## 117 168 238 3.4 81 8 25
## 118 73 215 8.0 86 8 26
## 119 NA 153 5.7 88 8 27
## 120 76 203 9.7 97 8 28
## 121 118 225 2.3 94 8 29
## 122 84 237 6.3 96 8 30
## 123 85 188 6.3 94 8 31
## 124 96 167 6.9 91 9 1
## 125 78 197 5.1 92 9 2
## 126 73 183 2.8 93 9 3
## 127 91 189 4.6 93 9 4
## 128 47 95 7.4 87 9 5
## 129 32 92 15.5 84 9 6
## 130 20 252 10.9 80 9 7
## 131 23 220 10.3 78 9 8
## 132 21 230 10.9 75 9 9
## 133 24 259 9.7 73 9 10
## 134 44 236 14.9 81 9 11
## 135 21 259 15.5 76 9 12
## 136 28 238 6.3 77 9 13
## 137 9 24 10.9 71 9 14
## 138 13 112 11.5 71 9 15
## 139 46 237 6.9 78 9 16
## 140 18 224 13.8 67 9 17
## 141 13 27 10.3 76 9 18
## 142 24 238 10.3 68 9 19
## 143 16 201 8.0 82 9 20
## 144 13 238 12.6 64 9 21
## 145 23 14 9.2 71 9 22
## 146 36 139 10.3 81 9 23
## 147 7 49 10.3 69 9 24
## 148 14 20 16.6 63 9 25
## 149 30 193 6.9 70 9 26
## 150 NA 145 13.2 77 9 27
## 151 14 191 14.3 75 9 28
## 152 18 131 8.0 76 9 29
## 153 20 223 11.5 68 9 30
airquality$Wind
## [1] 7.4 8.0 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 6.9 9.7 9.2 10.9 13.2
## [16] 11.5 12.0 18.4 11.5 9.7 9.7 16.6 9.7 12.0 16.6 14.9 8.0 12.0 14.9 5.7
## [31] 7.4 8.6 9.7 16.1 9.2 8.6 14.3 9.7 6.9 13.8 11.5 10.9 9.2 8.0 13.8
## [46] 11.5 14.9 20.7 9.2 11.5 10.3 6.3 1.7 4.6 6.3 8.0 8.0 10.3 11.5 14.9
## [61] 8.0 4.1 9.2 9.2 10.9 4.6 10.9 5.1 6.3 5.7 7.4 8.6 14.3 14.9 14.9
## [76] 14.3 6.9 10.3 6.3 5.1 11.5 6.9 9.7 11.5 8.6 8.0 8.6 12.0 7.4 7.4
## [91] 7.4 9.2 6.9 13.8 7.4 6.9 7.4 4.6 4.0 10.3 8.0 8.6 11.5 11.5 11.5
## [106] 9.7 11.5 10.3 6.3 7.4 10.9 10.3 15.5 14.3 12.6 9.7 3.4 8.0 5.7 9.7
## [121] 2.3 6.3 6.3 6.9 5.1 2.8 4.6 7.4 15.5 10.9 10.3 10.9 9.7 14.9 15.5
## [136] 6.3 10.9 11.5 6.9 13.8 10.3 10.3 8.0 12.6 9.2 10.3 10.3 16.6 6.9 13.2
## [151] 14.3 8.0 11.5
airquality$Wind[3]
## [1] 12.6
- Create a new data frame called aq that includes only the first 10 cases. Hint: typing c(1,2,3,4,5,6,7,8,9,10) is tedious. R allows you to use 1:10 as a shorthand method!
- Use logical indexing to print out all days (ie. cases) in aq where the Ozone level was higher than 20.
- What did the output do with NA values?
- Use subset() to do the same thing. Notice the difference in the output.
aq=head(airquality,10)
aq
## 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
## 7 23 299 8.6 65 5 7
## 8 19 99 13.8 59 5 8
## 9 8 19 20.1 61 5 9
## 10 NA 194 8.6 69 5 10
aq$Ozone>20
## [1] TRUE TRUE FALSE FALSE NA TRUE TRUE FALSE FALSE NA
#aq[aq$Ozone>20]
x=subset(aq,Ozone>20)
x
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 6 28 NA 14.9 66 5 6
## 7 23 299 8.6 65 5 7
- Create a TooWindy variable inside aq, which is a logical variable that is TRUE if Wind is greater than 10, and FALSE otherwise.
aq$TooWindy=aq$Wind>10
aq
## Ozone Solar.R Wind Temp Month Day TooWindy
## 1 41 190 7.4 67 5 1 FALSE
## 2 36 118 8.0 72 5 2 FALSE
## 3 12 149 12.6 74 5 3 TRUE
## 4 18 313 11.5 62 5 4 TRUE
## 5 NA NA 14.3 56 5 5 TRUE
## 6 28 NA 14.9 66 5 6 TRUE
## 7 23 299 8.6 65 5 7 FALSE
## 8 19 99 13.8 59 5 8 TRUE
## 9 8 19 20.1 61 5 9 TRUE
## 10 NA 194 8.6 69 5 10 FALSE
- Use the length() function to determine the number of observations in the airquality dataframe.
length(airquality)
## [1] 6
- Calculate the mean and standard deviation of one of the variables in airquality.
mean(airquality$Temp)
## [1] 77.88235
sd(airquality$Temp)
## [1] 9.46527
- Make a table of the Temp values.
temp=table(airquality$Temp)
temp
##
## 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
## 1 3 2 2 3 2 1 2 2 3 4 4 3 1 3 3 5 4 4 9 7 6 6 5 11 9
## 83 84 85 86 87 88 89 90 91 92 93 94 96 97
## 4 5 5 7 5 3 2 3 2 5 3 2 1 1
- Make a histogram of the Ozone column. Is it a normal distribution? Why or why not?
hist(airquality$Ozone)

#####this is not a normal distribution, because it's right-skewed
Functions:
- Make a simple function to calculate x + 6.
add6=function(x){x+6}
- Use that function add 6 to the Temp column in airquality.
add6(airquality$Temp)
## [1] 73 78 80 68 62 72 71 65 67 75 80 75 72 74 64 70 72 63
## [19] 74 68 65 79 67 67 63 64 63 73 87 85 82 84 80 73 90 91
## [37] 85 88 93 96 93 99 98 88 86 85 83 78 71 79 82 83 82 82
## [55] 82 81 84 79 86 83 89 90 91 87 90 89 89 94 98 98 95 88
## [73] 79 87 97 86 87 88 90 93 91 80 87 88 92 91 88 92 94 92
## [91] 89 87 87 87 88 92 91 93 95 96 96 98 92 92 88 86 85 83
## [109] 85 82 84 84 83 78 81 85 87 92 94 103 100 102 100 97 98 99
## [127] 99 93 90 86 84 81 79 87 82 83 77 77 84 73 82 74 88 70
## [145] 77 87 75 69 76 83 81 82 74
airquality$Temp=add6(airquality$Temp)
head(airquality,10)
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 73 5 1
## 2 36 118 8.0 78 5 2
## 3 12 149 12.6 80 5 3
## 4 18 313 11.5 68 5 4
## 5 NA NA 14.3 62 5 5
## 6 28 NA 14.9 72 5 6
## 7 23 299 8.6 71 5 7
## 8 19 99 13.8 65 5 8
## 9 8 19 20.1 67 5 9
## 10 NA 194 8.6 75 5 10
Packages:
- Install the ggplot2 package.
- Install the car package.
- Install the ez package. (no output necessary for these three)
- Load the car library.
r = getOption("repos")
r["CRAN"] = "http://cran.us.r-project.org"
options(repos = r)
install.packages("ggplot2")
## Installing package into 'C:/Users/cxcn/Documents/R/win-library/4.0'
## (as 'lib' is unspecified)
## package 'ggplot2' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\cxcn\AppData\Local\Temp\RtmpUbHf4Q\downloaded_packages
install.packages("car")
## Installing package into 'C:/Users/cxcn/Documents/R/win-library/4.0'
## (as 'lib' is unspecified)
## package 'car' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\cxcn\AppData\Local\Temp\RtmpUbHf4Q\downloaded_packages
install.packages("ez")
## Installing package into 'C:/Users/cxcn/Documents/R/win-library/4.0'
## (as 'lib' is unspecified)
## package 'ez' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\cxcn\AppData\Local\Temp\RtmpUbHf4Q\downloaded_packages
Files
- Import the csv file provided on Canvas.
#dat=read.csv("lab_R_learning.csv",header=TRUE)
library(readr)
lab1 = read_csv("lab_R_learning.csv")
## Parsed with column specification:
## cols(
## variable1 = col_double(),
## stuff2 = col_character(),
## thing3 = col_logical()
## )
str(lab1)
## tibble [10 x 3] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ variable1: num [1:10] 3 4 6 4 7 2 8 9 3 4
## $ stuff2 : chr [1:10] "cheese" "feta" "swiss" "cheese" ...
## $ thing3 : logi [1:10] TRUE FALSE TRUE FALSE FALSE TRUE ...
## - attr(*, "spec")=
## .. cols(
## .. variable1 = col_double(),
## .. stuff2 = col_character(),
## .. thing3 = col_logical()
## .. )