1.2 — Meet R — Practice

(Answer Key)

Author

Ryan Safner

Published

August 24, 2022

Quarto Documents

This is a Quarto document, which we will learn more about soon. It reproducibly integrates text, code, images, and lots of other inputs into a single document that can be rendered into outputs like webpages, PDF files, presentations, and lots of other outputs.

Take a look below, and see that there are questions for you to work on to practice your R skills, and in each of them is a code chunk with grey background that starts with {r} . This is where you can write code in this document to answer the questions. Note some of them I have done for you already, or you may need to change some parts of the code.

When you want to run a code chunk, click the green play button at the top right of the chunk. (The button to the left of it runs every chunk above the current one - which might be useful later, but not now.)

If you want to add your own code chunk, click the Insert dropdown menu and select “Code Chunk” and select R. (Notice you can run other languages in Quarto!). You can also type three backticks ``` and then the language in braces {r} and hit enter.

Creating Objects

Question 1

Part A

Create a vector called me with two elements: your first name, and your last name. See my example below and change the code to your own name.

me <- c("Ryan", "Safner")

Notice nothing appears to happen, but now there is a new object called me. in the environment pane (top right) in R Studio.

Part B

Call the object by typing its name to inspect it.

me
[1] "Ryan"   "Safner"

Part C

Confirm that it is a character type of data.

class(me)
[1] "character"

Question 2

Use R’s help functions to determine what the paste() function does. Then use it to paste together your first name and last name.

?paste() # or help(paste)

paste() is a function that combines (concatenates) multiple string objects into a single string object.

paste("Ryan", "Safner")
[1] "Ryan Safner"
# note you can choose how to separate string objects with the "sep" argument
# for example
paste("Ryan", "Safner", sep="") # no separation
[1] "RyanSafner"
paste("Ryan", "Safner", sep=" ") # separate with a space " " (the default)
[1] "Ryan Safner"
paste("Ryan", "Safner", sep="_") # separate with underscore
[1] "Ryan_Safner"

Question 3

Part A

Change the code below to create a vector called my_vector with all the even integers from 2 to 10.

my_vector <- c(2,4,6,8,10)

# verify it worked
my_vector
[1]  2  4  6  8 10

Part B

Find the mean and standard deviation of my_vector.

mean(my_vector)
[1] 6
sd(my_vector)
[1] 3.162278

Question 4

Change the code below to use the seq() function to create a sequence of all of the integers from 1 to 100 by 2, and then find the mean.

# save the sequence as a vector called my_seq
my_seq <- seq(from = 1, # starting number
           to = 100, # ending number
           by = 2) # move from number to number by increments of 2

# get the mean
mean(my_seq)
[1] 50

Working With Data

Question 5

Part A

Install the ggplot2 package with install.packages(). We don’t want to install packages into a code chunk (like where you’ve been writing your code so far), type the command into the console below. We want to install the package for R, not put it into this document.

Part B

Load the package:

library(ggplot2)

Part C

A dataset called diamonds is part of this package, let’s save it as a dataframe called diamonds.

diamonds <- diamonds

Notice how it loads in your environment pane to the upper right. You can click on the blue arrow to expand it and get a summary of the variables. You can also click on the name (diamonds) and it will open a data viewer panel in this window to actually view the data.

We can get a glimpse of the data here or in the console by simply calling the name:

diamonds # look at data
# A tibble: 53,940 × 10
   carat cut       color clarity depth table price     x     y     z
   <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
 1  0.23 Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
 2  0.21 Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
 3  0.23 Good      E     VS1      56.9    65   327  4.05  4.07  2.31
 4  0.29 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
 5  0.31 Good      J     SI2      63.3    58   335  4.34  4.35  2.75
 6  0.24 Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48
 7  0.24 Very Good I     VVS1     62.3    57   336  3.95  3.98  2.47
 8  0.26 Very Good H     SI1      61.9    55   337  4.07  4.11  2.53
 9  0.22 Fair      E     VS2      65.1    61   337  3.87  3.78  2.49
10  0.23 Very Good H     VS1      59.4    61   338  4     4.05  2.39
# … with 53,930 more rows

We can also view the structure with

str(diamonds)
tibble [53,940 × 10] (S3: tbl_df/tbl/data.frame)
 $ carat  : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
 $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
 $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
 $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
 $ depth  : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
 $ table  : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
 $ price  : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
 $ x      : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
 $ y      : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
 $ z      : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

We can also look at the top few rows of the data with

head(diamonds)
# A tibble: 6 × 10
  carat cut       color clarity depth table price     x     y     z
  <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1  0.23 Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
2  0.21 Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
3  0.23 Good      E     VS1      56.9    65   327  4.05  4.07  2.31
4  0.29 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
5  0.31 Good      J     SI2      63.3    58   335  4.34  4.35  2.75
6  0.24 Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48

Rendering Your Document

When you are finished (or at any point really, you can re-render as often as you want), click the Render button at the top of this pane to turn what you are editing here into an html webpage. Later, we will also talk about how to render to PDF and other output types.