Exercise 3.6

Question-01

Load the US murders dataset.

library(dslabs)

data(murders)

Use the function str to examine the structure of the murders object. We can see that this object is a data frame with 51 rows and fve columns. Which of the following best describes the variables represented in this data frame? A. The 51 states.

B. The murder rates for all 50 states and DC.

C. The state name, the abbreviation of the state name, the state’s region, and the state’s population and total number of murders for 2010.

D. str shows no relevant information.

Importing Library

library(dslabs)

Loading the Dataset

data(murders)

Structuring Dataset

str(df)
## function (x, df1, df2, ncp, log = FALSE)

Answer C. would be correct for the given statement.

Question-02

What are the column names used by the data frame for these five variables?

colnames(df)
## NULL

Question-03

Use the accessor $ to extract the state abbreviations and assign them to the object a. What is the class of this object?

a <- murders$abb
print(a)
##  [1] "AL" "AK" "AZ" "AR" "CA" "CO" "CT" "DE" "DC" "FL" "GA" "HI" "ID" "IL" "IN"
## [16] "IA" "KS" "KY" "LA" "ME" "MD" "MA" "MI" "MN" "MS" "MO" "MT" "NE" "NV" "NH"
## [31] "NJ" "NM" "NY" "NC" "ND" "OH" "OK" "OR" "PA" "RI" "SC" "SD" "TN" "TX" "UT"
## [46] "VT" "VA" "WA" "WV" "WI" "WY"
#class of a
class(a)
## [1] "character"

Question-04

Now use the square brackets to extract the state abbreviations and assign them to the object b. Use the identical function to determine if a and b are the same.

# Assuming "abb" is the column name for state abbreviations
b <- murders[["abb"]]
print(b)
##  [1] "AL" "AK" "AZ" "AR" "CA" "CO" "CT" "DE" "DC" "FL" "GA" "HI" "ID" "IL" "IN"
## [16] "IA" "KS" "KY" "LA" "ME" "MD" "MA" "MI" "MN" "MS" "MO" "MT" "NE" "NV" "NH"
## [31] "NJ" "NM" "NY" "NC" "ND" "OH" "OK" "OR" "PA" "RI" "SC" "SD" "TN" "TX" "UT"
## [46] "VT" "VA" "WA" "WV" "WI" "WY"
# Check if objects 'a' and 'b' are identical
identical(a, b)
## [1] TRUE

Question-05

We saw that the region column stores a factor. You can corroborate this by typing: class(murders$region) With one line of code, use the function levels and length to determine the number of regions defned by this dataset.

# Check the class of the 'region' column
class(murders$region)
## [1] "factor"
# Determine the number of regions defined in the 'Region' column
num_regions <- length(levels(murders$region))
num_regions
## [1] 4

Question-06

The function table takes a vector and returns the frequency of each element. You can quickly see how many states are in each region by applying this function. Use this function in one line of code to create a table of states per region.

# Create a table of states per region
region_table <- table(murders$region)
region_table
## 
##     Northeast         South North Central          West 
##             9            17            12            13

Exercise-3.9

Question-01

Use the function c to create a vector with the average high temperatures in January for Beijing, Lagos, Paris, Rio de Janeiro, San Juan and Toronto, which are 35, 88, 42, 84, 81, and 30 degrees Fahrenheit. Call the object temp.

# Create a vector with average high temperatures in January for the cities
temp <- c(35, 88, 42, 84, 81, 30)
print(temp)
## [1] 35 88 42 84 81 30

Question-02

Now create a vector with the city names and call the object city.

# Create a vector with the city names
city <- c("Beijing", "Lagos", "Paris", "Rio de Janeiro", "San Juan", "Toronto")
city
## [1] "Beijing"        "Lagos"          "Paris"          "Rio de Janeiro"
## [5] "San Juan"       "Toronto"

Question-03

Use the names function and the objects defined in the previous exercises to associate the temperature data with its corresponding city

# Create a vector with average high temperatures in January
temp <- c(35, 88, 42, 84, 81, 30)

# Create a vector with city names
city <- c("Beijing", "Lagos", "Paris", "Rio de Janeiro", "San Juan", "Toronto")

# Associate temperature data with city names
names(temp) <- city

Question-04

Use the [ and : operators to access the temperature of the first three cities on the list.

# Access the temperature data for the first three cities
first_three_temperatures <- temp[1:3]

# Print the temperature data for the first three cities
print(first_three_temperatures)
## Beijing   Lagos   Paris 
##      35      88      42

Question-05

Use the [ operator to access the temperature of Paris and San Juan.

# Access the temperature data for Paris and San Juan
paris_and_san_juan_temperatures <- temp[c("Paris", "San Juan")]

# Print the temperature data for Paris and San Juan
print(paris_and_san_juan_temperatures)
##    Paris San Juan 
##       42       81

Question-06

Use the : operator to create a sequence of numbers 12, 13, 14,…, 73.

# Create a sequence of numbers from 12 to 73
sequence <- 12:73

# Print the sequence
print(sequence)
##  [1] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
## [26] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
## [51] 62 63 64 65 66 67 68 69 70 71 72 73

Question-07

. Create a vector containing all the positive odd numbers smaller than 100.

# Create a vector of positive odd numbers smaller than 100
positive_odd_numbers <- seq(from = 1, to = 99, by = 2)

# Print the vector
print(positive_odd_numbers)
##  [1]  1  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
## [26] 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99

Question-08

Create a vector of numbers that starts at 6, does not pass 55, and adds numbers in increments of 4/7: 6, 6+4/7, 6+8/7, etc.. How many numbers does the list have? Hint: use seq and length.

# Create a vector of numbers starting at 6, not exceeding 55, and incrementing by 4/7
vector_of_numbers <- seq(from = 6, to = 55, by = 4/7)

# Determine the number of elements in the list
number_of_numbers <- length(vector_of_numbers)

# Print the vector and the number of elements
print(vector_of_numbers)
##  [1]  6.000000  6.571429  7.142857  7.714286  8.285714  8.857143  9.428571
##  [8] 10.000000 10.571429 11.142857 11.714286 12.285714 12.857143 13.428571
## [15] 14.000000 14.571429 15.142857 15.714286 16.285714 16.857143 17.428571
## [22] 18.000000 18.571429 19.142857 19.714286 20.285714 20.857143 21.428571
## [29] 22.000000 22.571429 23.142857 23.714286 24.285714 24.857143 25.428571
## [36] 26.000000 26.571429 27.142857 27.714286 28.285714 28.857143 29.428571
## [43] 30.000000 30.571429 31.142857 31.714286 32.285714 32.857143 33.428571
## [50] 34.000000 34.571429 35.142857 35.714286 36.285714 36.857143 37.428571
## [57] 38.000000 38.571429 39.142857 39.714286 40.285714 40.857143 41.428571
## [64] 42.000000 42.571429 43.142857 43.714286 44.285714 44.857143 45.428571
## [71] 46.000000 46.571429 47.142857 47.714286 48.285714 48.857143 49.428571
## [78] 50.000000 50.571429 51.142857 51.714286 52.285714 52.857143 53.428571
## [85] 54.000000 54.571429
cat("Number of numbers in the list:", number_of_numbers, "\n")
## Number of numbers in the list: 86

Question-09

What is the class of the following object a <- seq(1, 10, 0.5)?

a <- seq(1, 10, 0.5)
class(a)
## [1] "numeric"

Question-10

What is the class of the following object a <- seq(1, 10)?

a <- seq(1, 10)
class(a)
## [1] "integer"

Question-11

The class of class(a<-1) is numeric, not integer. R defaults to numeric and to force an integer, you need to add the letter L. Confirm that the class of 1L is integer.

x <- 1L
class(x)
## [1] "integer"

Question-12

Define the following vector: x <- c(“1”, “3”, “5”) and coerce it to get integers.

# Define the vector
x <- c("1", "3", "5")

# Coerce the elements to integers
x <- as.integer(x)

# Check the class of the vector 'x' after coercion
class(x)
## [1] "integer"