# Activity 2
# Submitted by Marc Rappaport
#############################################
# Vectors
b <- c(TRUE, TRUE, FALSE, TRUE)
class(b)
## [1] "logical"
d <- c(1.5, 3, 12, 23)
class(d)
## [1] "numeric"
g <- c("hello", "hi", "bye", "good")
class(g)
## [1] "character"
h<- 10:30
class(h)
## [1] "integer"
# Create a vector with different class types
my_vec <- c(1, 3, TRUE, "activity")
class(my_vec)
## [1] "character"
# Convert the elements to numeric
as.numeric(my_vec)
## Warning: NAs introduced by coercion
## [1] 1 3 NA NA
# Convert the elements to character
as.character(my_vec)
## [1] "1" "3" "TRUE" "activity"
# Convert the elements to logical
as.logical(my_vec)
## [1] NA NA TRUE NA
###########################################################################
# Sub-setting Vectors
vector_name <- c(1, 12, 13, 34, 57)
#Access the first element using index
vector_name[1]
## [1] 1
#Access the second through the fourth elements
vector_name[2:4]
## [1] 12 13 34
#Access all element except the third and the fifth
vector_name[-c(3,5)]
## [1] 1 12 34
#Not the first
vector_name[-1]
## [1] 12 13 34 57
#What type of statement do you get by running the following code?
vector_name > 12
## [1] FALSE FALSE TRUE TRUE TRUE
#Boolean
#what values satisfy the statement above?
vector_name[vector_name>12]
## [1] 13 34 57
#state the vector's length
length(vector_name)
## [1] 5
# Which elements from the list c(12,13,14) are in the vector?
vector_name[vector_name %in% c(12,13,14)]
## [1] 12 13
##############################################################################
# EXTRACTING ELEMENTS FROM VECTORS
# Dataset: rivers
rivers
## [1] 735 320 325 392 524 450 1459 135 465 600 330 336 280 315 870
## [16] 906 202 329 290 1000 600 505 1450 840 1243 890 350 407 286 280
## [31] 525 720 390 250 327 230 265 850 210 630 260 230 360 730 600
## [46] 306 390 420 291 710 340 217 281 352 259 250 470 680 570 350
## [61] 300 560 900 625 332 2348 1171 3710 2315 2533 780 280 410 460 260
## [76] 255 431 350 760 618 338 981 1306 500 696 605 250 411 1054 735
## [91] 233 435 490 310 460 383 375 1270 545 445 1885 380 300 380 377
## [106] 425 276 210 800 420 350 360 538 1100 1205 314 237 610 360 540
## [121] 1038 424 310 300 444 301 268 620 215 652 900 525 246 360 529
## [136] 500 720 270 430 671 1770
# What is 'rivers'?
#This data set gives the lengths (in miles) of 141 “major” rivers in North America,
#as compiled by the US Geological Survey.
# You get this info by typing ?rivers in the console
# How many rivers are longer than 1000 miles?
rivers>1000
## [1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
## [25] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [61] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
## [73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
## [85] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [97] FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [109] FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
## [121] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [133] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
sum(rivers>1000)
## [1] 16
# Get the maximum river length
max(rivers)
## [1] 3710
# Get the smallest river length
min(rivers)
## [1] 135
# Sort river lengths in ascending order, then in a descending order.
sort(rivers)
## [1] 135 202 210 210 215 217 230 230 233 237 246 250 250 250 255
## [16] 259 260 260 265 268 270 276 280 280 280 281 286 290 291 300
## [31] 300 300 301 306 310 310 314 315 320 325 327 329 330 332 336
## [46] 338 340 350 350 350 350 352 360 360 360 360 375 377 380 380
## [61] 383 390 390 392 407 410 411 420 420 424 425 430 431 435 444
## [76] 445 450 460 460 465 470 490 500 500 505 524 525 525 529 538
## [91] 540 545 560 570 600 600 600 605 610 618 620 625 630 652 671
## [106] 680 696 710 720 720 730 735 735 760 780 800 840 850 870 890
## [121] 900 900 906 981 1000 1038 1054 1100 1171 1205 1243 1270 1306 1450 1459
## [136] 1770 1885 2315 2348 2533 3710
sort(rivers, decreasing = T)
## [1] 3710 2533 2348 2315 1885 1770 1459 1450 1306 1270 1243 1205 1171 1100 1054
## [16] 1038 1000 981 906 900 900 890 870 850 840 800 780 760 735 735
## [31] 730 720 720 710 696 680 671 652 630 625 620 618 610 605 600
## [46] 600 600 570 560 545 540 538 529 525 525 524 505 500 500 490
## [61] 470 465 460 460 450 445 444 435 431 430 425 424 420 420 411
## [76] 410 407 392 390 390 383 380 380 377 375 360 360 360 360 352
## [91] 350 350 350 350 340 338 336 332 330 329 327 325 320 315 314
## [106] 310 310 306 301 300 300 300 291 290 286 281 280 280 280 276
## [121] 270 268 265 260 260 259 255 250 250 250 246 237 233 230 230
## [136] 217 215 210 210 202 135
# Find the indices of rivers with length equal to 350
which(rivers == 350)
## [1] 27 60 78 111
# Count how many unique river lengths there are
sum(rivers==350)
## [1] 4
# Coerce river lengths to character
as.character(rivers)
## [1] "735" "320" "325" "392" "524" "450" "1459" "135" "465" "600"
## [11] "330" "336" "280" "315" "870" "906" "202" "329" "290" "1000"
## [21] "600" "505" "1450" "840" "1243" "890" "350" "407" "286" "280"
## [31] "525" "720" "390" "250" "327" "230" "265" "850" "210" "630"
## [41] "260" "230" "360" "730" "600" "306" "390" "420" "291" "710"
## [51] "340" "217" "281" "352" "259" "250" "470" "680" "570" "350"
## [61] "300" "560" "900" "625" "332" "2348" "1171" "3710" "2315" "2533"
## [71] "780" "280" "410" "460" "260" "255" "431" "350" "760" "618"
## [81] "338" "981" "1306" "500" "696" "605" "250" "411" "1054" "735"
## [91] "233" "435" "490" "310" "460" "383" "375" "1270" "545" "445"
## [101] "1885" "380" "300" "380" "377" "425" "276" "210" "800" "420"
## [111] "350" "360" "538" "1100" "1205" "314" "237" "610" "360" "540"
## [121] "1038" "424" "310" "300" "444" "301" "268" "620" "215" "652"
## [131] "900" "525" "246" "360" "529" "500" "720" "270" "430" "671"
## [141] "1770"
# Multiply all river lengths by 100
rivers*100
## [1] 73500 32000 32500 39200 52400 45000 145900 13500 46500 60000
## [11] 33000 33600 28000 31500 87000 90600 20200 32900 29000 100000
## [21] 60000 50500 145000 84000 124300 89000 35000 40700 28600 28000
## [31] 52500 72000 39000 25000 32700 23000 26500 85000 21000 63000
## [41] 26000 23000 36000 73000 60000 30600 39000 42000 29100 71000
## [51] 34000 21700 28100 35200 25900 25000 47000 68000 57000 35000
## [61] 30000 56000 90000 62500 33200 234800 117100 371000 231500 253300
## [71] 78000 28000 41000 46000 26000 25500 43100 35000 76000 61800
## [81] 33800 98100 130600 50000 69600 60500 25000 41100 105400 73500
## [91] 23300 43500 49000 31000 46000 38300 37500 127000 54500 44500
## [101] 188500 38000 30000 38000 37700 42500 27600 21000 80000 42000
## [111] 35000 36000 53800 110000 120500 31400 23700 61000 36000 54000
## [121] 103800 42400 31000 30000 44400 30100 26800 62000 21500 65200
## [131] 90000 52500 24600 36000 52900 50000 72000 27000 43000 67100
## [141] 177000
#############################################################################
# MISSING VALUES
Mixed_vector <- c(24, 60, Inf-Inf, NA)
is.na(Mixed_vector)
## [1] FALSE FALSE TRUE TRUE
is.nan(Mixed_vector)
## [1] FALSE FALSE TRUE FALSE