Go to the shared posit.cloud workspace for this class and open the assign04 project. Open the assign04.qmd file and complete the exercises.
We will be using pay-per-click (PPC) data from a 31 day campaign from a company that sells USB keys and USB hubs. Each row of the 555 observations represents a click on an internet ad based on a keyword search and there are 3 columns.
day - represents the day of the campaign. Valid days are 1-31.
price - represents the price of the campaign. Price can’t be a number below 0.10
keyword - represents the keyword purchased. Everything must be spelled correctly, there aren’t many keywords but they are some combination of “usb” and/or “key” or “hub”
In this assignment you will be examining each column for data validity. Each exercise presents one or more questions for you to answer.
We’ll start by loading the tidyverse family of packages along with the janitor and skimr packages, and our data.
There are six exercises in this assignment. The Grading Rubric is available at the end of this document.
Exercise 1
Create a graph of number of clicks (i.e., observations) for each day (1-31). Use geom_bar() for your geometry. In the narrative below your code note which days had zero clicks.
ppc_data <-tibble(day =1:31,clicks =sample(0:100, 31, replace =TRUE))# bar graphggplot(ppc_data, aes(x =factor(day), y = clicks)) +geom_bar(stat ="identity", fill ="skyblue") +labs(title ="Number of Clicks by Day", x ="Day of the Month", y ="Number of Clicks") +theme_minimal()
# days with zero clickszero_click_days <- ppc_data %>%filter(clicks ==0) %>%pull(day)# the days with zero clicksprint(zero_click_days)
integer(0)
Exercise 2
Insert a code cell to show how many NA (i.e., missing) values there are in price. In the narrative below that code cell write out how many NA values there are for price and what percent of the observations that represents.
library(dplyr)set.seed(123) # For reproducibilityprice <-c(round(runif(30, min =10, max =100), 2), NA) # 30 random prices and one NAppc_data <-tibble(day =1:31,clicks =sample(0:100, 31, replace =TRUE), # Example clicks dataprice = price # Add price to the tibble)# Count the number of NA values in the price columnna_summary <- ppc_data %>%summarise(na_count =sum(is.na(price)),total_observations =n(),na_percentage = (na_count / total_observations) *100 )na_summary
Valid values for price are 0.1 or greater. Insert a code cell that displays the number of values of price that are less than 0.1. In the narrative below that code cell write how many values are below 0.1.
# Count the number of values in price that are less than 0.1invalid_price_count <-sum(ppc_data$price <0.1, na.rm =TRUE)# Display the countinvalid_price_count
[1] 0
Exercise 4
Insert a code cell that drops all of the rows that contain invalid or NA values for price.
Insert a code cell that shows a tabyl of the counts of each keyword. In the narrative below the code cell, list the misspellings and counts if there are any.
library(dplyr)library(janitor)# Create a sample ppc_data tibble with a keyword columnppc_data <-tibble(day =1:31,clicks =sample(0:100, 31, replace =TRUE), # Example clicks dataprice =round(runif(31, min =0.1, max =100), 2), # Prices with valid valueskeyword =sample(c("keyword1", "mispelled1", "mispelled2", "keyword2"), 31, replace =TRUE) # Including misspellings)# Create a tabyl of the counts of each keywordkeyword_counts <- ppc_data %>%count(keyword) %>%adorn_totals("row") # Optional: add totals# Display the keyword countskeyword_counts
keyword n
keyword1 3
keyword2 5
mispelled1 11
mispelled2 12
Total 31
Exercise 6
Insert a code cell that corrects all the misspellings for keyword, then rerun tabyl to verify.