Submission Instructions

  1. Complete all questions inside this R Markdown file.
  2. Knit the file to HTML (click Knit).
  3. Open the resulting HTML in your web browser.
  4. Save the HTML as a PDF:
    • File → Print → Save as PDF
  5. Submit both files on Blackboard:
    • Homework_2.Rmd
    • Homework_2.pdf

Instructions

  • Complete each problem using R Markdown.
  • Put all R code inside R code chunks.
  • When instructed not to print anything, ensure no output appears.
  • When instructed to write a sentence, type it outside of the R code chunk.

Section 1

In this part you will practice working with vectors and strings.

  1. Create and store a vector that consists of the following movie lengths (in minutes): 94, 109, 110, 123, 125, 108, 92, 106, 84, 119, 110, and 140.
moviel <- c(94,109,110,123,125,108,92,106,84,119,110,140)
  1. Using your entire movie length vector from part 1, as well as the cat() function, reproduce the output below exactly as it’s displayed. Note that the round() function allows you to round to a specified number of decimal places. Also note that you may not manually type the number 110.
cat("Mean movie length (in min):\n",mean(moviel),"minutes")
## Mean movie length (in min):
##  110 minutes

Mean movie length (in min):
110 minutes

  1. Using your entire movie length vector from part 1, as well as the paste() and/or paste0() functions, reproduce the output below exactly as it’s displayed. You may not manually type the number 110.
    “The mean movie length is 110 minutes.”
paste("The mean movie length is", mean(moviel), "minutes.")
## [1] "The mean movie length is 110 minutes."

Section 2

In this part you will practice working with data frames that you will create manually.

  1. Create and print a data frame that consists of the following variables and values for recipes:
  • type of recipe: entree, appetizer, appetizer, entree, entree, appetizer, dessert, dessert, entree, entree,
  • number of ingredients: 8, 4, 5, 10, 6, 8, 7, 15, 10, 9,
  • total prep time (in min): 15, 15, 5, 35, 20, 40, 25, 30, 10, 20,
  • total cook time (in min): 30, 15, 20, 55, 25, 10, 120, 25, 45, 60, and
  • contains meat (yes/no): yes, yes, yes, no, no, yes, no, no, yes, yes
typeofrecipe <- c("entree", "appetizer", "appetizer", "entree", "entree",
    "appetizer", "dessert", "dessert", "entree", "entree")
numberofingredients <- c(8, 4, 5, 10, 6, 8, 7, 15, 10, 9)
totalpreptime <- c(15, 15, 5, 35, 20, 40, 25, 30, 10, 20)
totalcooktime <- c(30, 15, 20, 55, 25, 10, 120, 25, 45, 60)
containsmeat <- c("yes", "yes", "yes", "no", "no", "yes", "no", "no", "yes", "yes")


food <- data.frame(
  TypeofRecipe = typeofrecipe,
  NumberOfIngredients = numberofingredients,
  TotalPrepTime = totalpreptime,
  TotalCookTime = totalcooktime,
  ContainsMeat = containsmeat,
  stringAsFactors = FALSE
)

Note: Two of the variables should be factors! Also, make sure your variable names are descriptive but not too long.

  1. Create a new variable that measures the total time (prep + cook) it takes to make each recipe. Add this new variable to the data frame from part
    1, and then print the updated data frame. You may not manually type the numbers.
typeofrecipe <- c("entree", "appetizer", "appetizer", "entree", "entree",
    "appetizer", "dessert", "dessert", "entree", "entree")
numberofingredients <- c(8, 4, 5, 10, 6, 8, 7, 15, 10, 9)
totalpreptime <- c(15, 15, 5, 35, 20, 40, 25, 30, 10, 20)
totalcooktime <- c(30, 15, 20, 55, 25, 10, 120, 25, 45, 60)
containsmeat <- c("yes", "yes", "yes", "no", "no", "yes", "no", "no", "yes", "yes")
totaltime <- totalpreptime + totalcooktime

food2 <- data.frame(
  TypeofRecipe = typeofrecipe,
  NumberOfIngredients = numberofingredients,
  TotalPrepTime = totalpreptime,
  TotalCookTime = totalcooktime,
  ContainsMeat = containsmeat,
  TotalTime = totaltime,
  stringAsFactors = FALSE
)
  1. Create and print a second data frame that consists of the following variables and values for four additional recipes:
  • type of recipe: appetizer, entree, dessert, appetizer
  • number of ingredients: 3, 15, 8, 5,
  • total prep time (in min): 10, 35, 45, 10,
  • total cook time (in min): 0, 90, 150, 20, and
  • contains meat (yes/no): no, no, no, yes
typeofrecipe2 <- c("appetizer", "entree", "dessert", "appetizer")
numberofingredients2 <- c(3, 15, 8, 5)
totalpreptime2 <- c(10, 35, 45, 10)
totalcooktime2 <- c(0, 90, 150, 20)
containsmeat2 <- c("no","no","no", "yes")


food3 <- data.frame(
  TypeofRecipe2 = typeofrecipe2,
  NumberOfIngredients2 = numberofingredients2,
  TotalPrepTime2 = totalpreptime2,
  TotalCookTime2 = totalcooktime2,
  ContainsMeat2 = containsmeat2,
  stringAsFactors = FALSE
)
  1. Create the same total time variable you created in part 2 for this new data set, and then print the updated data frame.
typeofrecipe2 <- c("appetizer", "entree", "dessert", "appetizer")
numberofingredients2 <- c(3, 15, 8, 5)
totalpreptime2 <- c(10, 35, 45, 10)
totalcooktime2 <- c(0, 90, 150, 20)
containsmeat2 <- c("no","no","no", "yes")
totaltime2 <- totalpreptime2 + totalcooktime2

food3 <- data.frame(
  TypeofRecipe2 = typeofrecipe2,
  NumberOfIngredients2 = numberofingredients2,
  TotalPrepTime2 = totalpreptime2,
  TotalCookTime2 = totalcooktime2,
  ContainsMeat2 = containsmeat2,
  TotalTime2 = totaltime2,
  stringAsFactors = FALSE
)
  1. Combine the data frames from parts 1 and 4 so that you have a new data set with 14 observations, and then print the resulting data frame.
colnames(food3) <- colnames(food2)

food4 <- rbind(food2, food3)

food4
##    TypeofRecipe NumberOfIngredients TotalPrepTime TotalCookTime ContainsMeat
## 1        entree                   8            15            30          yes
## 2     appetizer                   4            15            15          yes
## 3     appetizer                   5             5            20          yes
## 4        entree                  10            35            55           no
## 5        entree                   6            20            25           no
## 6     appetizer                   8            40            10          yes
## 7       dessert                   7            25           120           no
## 8       dessert                  15            30            25           no
## 9        entree                  10            10            45          yes
## 10       entree                   9            20            60          yes
## 11    appetizer                   3            10             0           no
## 12       entree                  15            35            90           no
## 13      dessert                   8            45           150           no
## 14    appetizer                   5            10            20          yes
##    TotalTime stringAsFactors
## 1         45           FALSE
## 2         30           FALSE
## 3         25           FALSE
## 4         90           FALSE
## 5         45           FALSE
## 6         50           FALSE
## 7        145           FALSE
## 8         55           FALSE
## 9         55           FALSE
## 10        80           FALSE
## 11        10           FALSE
## 12       125           FALSE
## 13       195           FALSE
## 14        30           FALSE
  1. Print all of the data for the recipes than take under an hour to make (start to finish).

Section 3

In this part you will practice working with a data frame that has already been created. The data set, named mtcars, is included with base R.

  1. What type of data structure is the data set stored as? Use an appropriate function and then type your answer above your code (outside of the R code chunk).
class(mtcars)
## [1] "data.frame"
  1. How many cars are in the data set? How many variables are there? Use appropriate function(s) and then type your answers above your code (outside of the R code chunk).
nrow(mtcars)
## [1] 32
ncol(mtcars)
## [1] 11
  1. Print the first nine rows of the data set.
head(mtcars, 9)
##                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
  1. Extract the miles per gallon (mpg) variable from the data set.
mpg_values <- mtcars$mpg
mpg_values
##  [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4
## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7
## [31] 15.0 21.4
  1. Find the average and median mpg of the cars.
mean(mtcars$mpg)
## [1] 20.09062
median(mtcars$mpg)
## [1] 19.2
  1. Create a new data frame that consists of only the miles per gallon (mpg) and horsepower (hp) variables for all of the cars. Make sure not to remove the names of the cars.
mpg_hp_df <- mtcars[, c("mpg", "hp")]
mpg_hp_df
##                      mpg  hp
## Mazda RX4           21.0 110
## Mazda RX4 Wag       21.0 110
## Datsun 710          22.8  93
## Hornet 4 Drive      21.4 110
## Hornet Sportabout   18.7 175
## Valiant             18.1 105
## Duster 360          14.3 245
## Merc 240D           24.4  62
## Merc 230            22.8  95
## Merc 280            19.2 123
## Merc 280C           17.8 123
## Merc 450SE          16.4 180
## Merc 450SL          17.3 180
## Merc 450SLC         15.2 180
## Cadillac Fleetwood  10.4 205
## Lincoln Continental 10.4 215
## Chrysler Imperial   14.7 230
## Fiat 128            32.4  66
## Honda Civic         30.4  52
## Toyota Corolla      33.9  65
## Toyota Corona       21.5  97
## Dodge Challenger    15.5 150
## AMC Javelin         15.2 150
## Camaro Z28          13.3 245
## Pontiac Firebird    19.2 175
## Fiat X1-9           27.3  66
## Porsche 914-2       26.0  91
## Lotus Europa        30.4 113
## Ford Pantera L      15.8 264
## Ferrari Dino        19.7 175
## Maserati Bora       15.0 335
## Volvo 142E          21.4 109
  1. Print all of the data for the cars with at least 105 horsepower.
mtcars[mtcars$hp >= 105, ]
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
  1. Print all of the data for the cars with an mpg under 20 or over 25 from the data set.
mtcars[mtcars$mpg < 20 | mtcars$mpg > 25, ]
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
  1. Print all of the data for the cars with an mpg of at least 22 and a horsepower under 95.
mtcars[mtcars$mpg >= 22 & mtcars$hp < 95, ]
##                 mpg cyl  disp hp drat    wt  qsec vs am gear carb
## Datsun 710     22.8   4 108.0 93 3.85 2.320 18.61  1  1    4    1
## Merc 240D      24.4   4 146.7 62 3.69 3.190 20.00  1  0    4    2
## Fiat 128       32.4   4  78.7 66 4.08 2.200 19.47  1  1    4    1
## Honda Civic    30.4   4  75.7 52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla 33.9   4  71.1 65 4.22 1.835 19.90  1  1    4    1
## Fiat X1-9      27.3   4  79.0 66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2  26.0   4 120.3 91 4.43 2.140 16.70  0  1    5    2