diff --git a/class-activity-2.Rmd b/class-activity-2.Rmd index e547dd9..b772335 100644 --- a/class-activity-2.Rmd +++ b/class-activity-2.Rmd @@ -15,9 +15,9 @@ D2 <- filter(D1, schoolyear == 20112012) #Histograms ```{r} -#Generate a histogramof the percentage of free/reduced lunch students (frl_percent) at each school +#Generate a histogram of the percentage of free/reduced lunch students (frl_percent) at each school -hist() +hist(D2$frl_percent) #Change the number of breaks to 100, do you get the same impression? @@ -60,7 +60,7 @@ plot(D3$schoolyear, D3$mean_enrollment, type = "l", lty = "dashed") #Create a boxplot of total enrollment for three schools D4 <- filter(D1, DBN == "31R075"|DBN == "01M015"| DBN == "01M345") -#The drop levels command will remove all the schools from the variable with not data +#The drop levels command will remove all the schools from the variable with no data D4 <- droplevels(D4) boxplot(D4$total_enrollment ~ D4$DBN) ``` @@ -79,15 +79,20 @@ pairs(D5) #rnorm(100, 75, 15) creates a random sample with a mean of 75 and standard deviation of 20 #pmax sets a maximum value, pmin sets a minimum value #round rounds numbers to whole number values -#sample draws a random samples from the groups vector according to a uniform distribution - - +#sample draws a random sample from the groups vector according to a uniform distribution +set.seed(12) +student <- seq(1,100) +scores <- round(rnorm(100, 75, 20)) +scores <- pmax(1,pmin(scores,100)) +groups <- c("sport", "music", "nature", "literature") +interest <- sample(groups,100,replace = TRUE) +D6 <- data.frame(student,scores,interest) ``` 2. Using base R commands, draw a histogram of the scores. Change the breaks in your histogram until you think they best represent your data. ```{r} - +hist(D6$scores,breaks = 10) ``` @@ -96,6 +101,9 @@ pairs(D5) ```{r} #cut() divides the range of scores into intervals and codes the values in scores according to which interval they fall. We use a vector called `letters` as the labels, `letters` is a vector made up of the letters of the alphabet. +D6$binned = cut(D6$scores,breaks = 10,labels = letters[1:10]) + + ``` 4. Now using the colorbrewer package (RColorBrewer; http://colorbrewer2.org/#type=sequential&scheme=BuGn&n=3) design a pallette and assign it to the groups in your data on the histogram. @@ -103,11 +111,18 @@ pairs(D5) ```{r} library(RColorBrewer) #Let's look at the available palettes in RColorBrewer +display.brewer.all() #The top section of palettes are sequential, the middle section are qualitative, and the lower section are diverging. #Make RColorBrewer palette available to R and assign to your bins +D6$colors <- brewer.pal(10, "Set3") + +##Why add the colors to the dataframe? Why not just have it be an environment variable? The way it shows in my project, as a new column in the dataframe, seems random. #Use named palette in histogram +hist(D6$scores, col = D6$colors) + + ``` @@ -116,6 +131,10 @@ library(RColorBrewer) ```{r} #Make a vector of the colors from RColorBrewer +interest.color <- brewer.pal(4, name = "Set2") +boxplot(D6$scores ~ interest, col = interest.color) + +##Why does the solution show an additional plot() function here? ``` @@ -123,13 +142,19 @@ library(RColorBrewer) 6. Now simulate a new variable that describes the number of logins that students made to the educational game. They should vary from 1-25. ```{r} +D6$logins <- sample(1:25,length(student), replace = TRUE) ``` 7. Plot the relationships between logins and scores. Give the plot a title and color the dots according to interest group. ```{r} +D6$col1 <- ifelse(D6$interest == "music", interest.color[1], ifelse(D6$interest == "literature", interest.color[2], ifelse(D6$interest == "sport", interest.color[3], ifelse(D6$interest == "nature", interest.color[4],NA +)))) + +plot(D6$logins, D6$scores, main = "Relationship between logins and scores.", col = D6$col1) +##A couple of things. "red" and "green" shown in the solution did not yield anything on my end, so I chose items from the interest.color vector. Also, the ifelse statement shown in the solution only distinguishes between music and not music--why? Is the idea to leave the nesting of ifelse statements as an excercise, or did I misread the prompt? And last, with the answer as shown on github, where you store the color in the col1 variable after calling it in the plot function, it works as expected in R studio but not in the knit HTML doc. To get my colors to show in the HTML, I had to switch the order of those statements. ``` @@ -137,13 +162,18 @@ library(RColorBrewer) 8. R contains several inbuilt data sets, one of these in called AirPassengers. Plot a line graph of the the airline passengers over time using this data set. ```{r} +AirPassengers +plot(AirPassengers) ``` -9. Using another inbuilt data set, iris, plot the relationships between all of the variables in the data set. Which of these relationships is it appropraiet to run a correlation on? +9. Using another inbuilt data set, iris, plot the relationships between all of the variables in the data set. Which of these relationships is it appropriate to run a correlation on? ```{r} +iris +pairs(iris) +#I didnt see an explicit answer to these, and I'm not sure how to answer, but if I could, how could I tell which pair is which? ``` diff --git a/class-activity-2.Rproj b/class-activity-2.Rproj new file mode 100644 index 0000000..8e3c2eb --- /dev/null +++ b/class-activity-2.Rproj @@ -0,0 +1,13 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX diff --git a/class-activity-2.html b/class-activity-2.html new file mode 100644 index 0000000..f2a0b9a --- /dev/null +++ b/class-activity-2.html @@ -0,0 +1,730 @@ + + + + +
+ + + + + + + + + + + +#Input
+D1 <- read.csv("School_Demographics_and_Accountability_Snapshot_2006-2012.csv", header = TRUE, sep = ",")
+
+#Create a data frame only contains the years 2011-2012
+library(dplyr)
+##
+## Attaching package: 'dplyr'
+## The following objects are masked from 'package:stats':
+##
+## filter, lag
+## The following objects are masked from 'package:base':
+##
+## intersect, setdiff, setequal, union
+D2 <- filter(D1, schoolyear == 20112012)
+#Histograms
+#Generate a histogram of the percentage of free/reduced lunch students (frl_percent) at each school
+
+hist(D2$frl_percent)
+
+#Change the number of breaks to 100, do you get the same impression?
+
+hist(D2$frl_percent, breaks = 100)
+
+#Cut the y-axis off at 30
+
+hist(D2$frl_percent, breaks = 100, ylim = c(0,30))
+
+#Restore the y-axis and change the breaks so that they are 0-10, 10-20, 20-80, 80-100
+
+hist(D2$frl_percent, breaks = c(0,10,20,80,100))
+
+#Plots
+#Plot the number of English language learners (ell_num) by Computational Thinking Test scores (ctt_num)
+
+plot(D2$ell_num, D2$ctt_num)
+
+#Create two variables x & y
+x <- c(1,3,2,7,6,4,4)
+y <- c(2,4,2,3,2,4,3)
+
+#Create a table from x & y
+table1 <- table(x,y)
+
+#Display the table as a Barplot
+barplot(table1)
+
+#Create a data frame of the average total enrollment for each year and plot the two against each other as a lines
+
+library(tidyr)
+##
+## Attaching package: 'tidyr'
+## The following object is masked _by_ '.GlobalEnv':
+##
+## table1
+D3 <- D1 %>% group_by(schoolyear) %>% summarise(mean_enrollment = mean(total_enrollment))
+
+plot(D3$schoolyear, D3$mean_enrollment, type = "l", lty = "dashed")
+
+#Create a boxplot of total enrollment for three schools
+D4 <- filter(D1, DBN == "31R075"|DBN == "01M015"| DBN == "01M345")
+#The drop levels command will remove all the schools from the variable with no data
+D4 <- droplevels(D4)
+boxplot(D4$total_enrollment ~ D4$DBN)
+#Pairs
+#Use matrix notation to select columns 5,6, 21, 22, 23, 24
+D5 <- D2[,c(5,6, 21:24)]
+#Draw a matrix of plots for every combination of variables
+pairs(D5)
+# Exercise
+#rnorm(100, 75, 15) creates a random sample with a mean of 75 and standard deviation of 20
+#pmax sets a maximum value, pmin sets a minimum value
+#round rounds numbers to whole number values
+#sample draws a random sample from the groups vector according to a uniform distribution
+set.seed(12)
+student <- seq(1,100)
+scores <- round(rnorm(100, 75, 20))
+scores <- pmax(1,pmin(scores,100))
+groups <- c("sport", "music", "nature", "literature")
+interest <- sample(groups,100,replace = TRUE)
+D6 <- data.frame(student,scores,interest)
+hist(D6$scores,breaks = 10)
+
+#cut() divides the range of scores into intervals and codes the values in scores according to which interval they fall. We use a vector called `letters` as the labels, `letters` is a vector made up of the letters of the alphabet.
+
+D6$binned = cut(D6$scores,breaks = 10,labels = letters[1:10])
+library(RColorBrewer)
+#Let's look at the available palettes in RColorBrewer
+display.brewer.all()
+
+#The top section of palettes are sequential, the middle section are qualitative, and the lower section are diverging.
+#Make RColorBrewer palette available to R and assign to your bins
+D6$colors <- brewer.pal(10, "Set3")
+#Use named palette in histogram
+hist(D6$scores, col = D6$colors)
+
+##Why add the colors to the dataframe? Why not just have it be an environment variable?
+#Make a vector of the colors from RColorBrewer
+interest.color <- brewer.pal(4, name = "Set2")
+boxplot(D6$scores ~ interest, col = interest.color)
+
+##Why does the solution show an additional plot() function here?
+D6$logins <- sample(1:25,length(student), replace = TRUE)
+D6$col1 <- ifelse(D6$interest == "music", interest.color[1], ifelse(D6$interest == "literature", interest.color[2], ifelse(D6$interest == "sport", interest.color[3], ifelse(D6$interest == "nature", interest.color[4],NA
+))))
+
+plot(D6$logins, D6$scores, main = "Relationship between logins and scores.", col = D6$col1)
+
+#A couple of things. "red" and "green" shown in the solution did not yield anything on my end, so I chose items from the interest.color vector. Also, the ifelse statement shown in the solution only distinguishes between music and not music--why? Is the idea to leave the nesting of ifelse statements as an excercise, or did I misread the prompt? Also, I get all the colors in my R markdown but none show when the document is knit.
+AirPassengers
+## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
+## 1949 112 118 132 129 121 135 148 148 136 119 104 118
+## 1950 115 126 141 135 125 149 170 170 158 133 114 140
+## 1951 145 150 178 163 172 178 199 199 184 162 146 166
+## 1952 171 180 193 181 183 218 230 242 209 191 172 194
+## 1953 196 196 236 235 229 243 264 272 237 211 180 201
+## 1954 204 188 235 227 234 264 302 293 259 229 203 229
+## 1955 242 233 267 269 270 315 364 347 312 274 237 278
+## 1956 284 277 317 313 318 374 413 405 355 306 271 306
+## 1957 315 301 356 348 355 422 465 467 404 347 305 336
+## 1958 340 318 362 348 363 435 491 505 404 359 310 337
+## 1959 360 342 406 396 420 472 548 559 463 407 362 405
+## 1960 417 391 419 461 472 535 622 606 508 461 390 432
+plot(AirPassengers)
+
+iris
+## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
+## 1 5.1 3.5 1.4 0.2 setosa
+## 2 4.9 3.0 1.4 0.2 setosa
+## 3 4.7 3.2 1.3 0.2 setosa
+## 4 4.6 3.1 1.5 0.2 setosa
+## 5 5.0 3.6 1.4 0.2 setosa
+## 6 5.4 3.9 1.7 0.4 setosa
+## 7 4.6 3.4 1.4 0.3 setosa
+## 8 5.0 3.4 1.5 0.2 setosa
+## 9 4.4 2.9 1.4 0.2 setosa
+## 10 4.9 3.1 1.5 0.1 setosa
+## 11 5.4 3.7 1.5 0.2 setosa
+## 12 4.8 3.4 1.6 0.2 setosa
+## 13 4.8 3.0 1.4 0.1 setosa
+## 14 4.3 3.0 1.1 0.1 setosa
+## 15 5.8 4.0 1.2 0.2 setosa
+## 16 5.7 4.4 1.5 0.4 setosa
+## 17 5.4 3.9 1.3 0.4 setosa
+## 18 5.1 3.5 1.4 0.3 setosa
+## 19 5.7 3.8 1.7 0.3 setosa
+## 20 5.1 3.8 1.5 0.3 setosa
+## 21 5.4 3.4 1.7 0.2 setosa
+## 22 5.1 3.7 1.5 0.4 setosa
+## 23 4.6 3.6 1.0 0.2 setosa
+## 24 5.1 3.3 1.7 0.5 setosa
+## 25 4.8 3.4 1.9 0.2 setosa
+## 26 5.0 3.0 1.6 0.2 setosa
+## 27 5.0 3.4 1.6 0.4 setosa
+## 28 5.2 3.5 1.5 0.2 setosa
+## 29 5.2 3.4 1.4 0.2 setosa
+## 30 4.7 3.2 1.6 0.2 setosa
+## 31 4.8 3.1 1.6 0.2 setosa
+## 32 5.4 3.4 1.5 0.4 setosa
+## 33 5.2 4.1 1.5 0.1 setosa
+## 34 5.5 4.2 1.4 0.2 setosa
+## 35 4.9 3.1 1.5 0.2 setosa
+## 36 5.0 3.2 1.2 0.2 setosa
+## 37 5.5 3.5 1.3 0.2 setosa
+## 38 4.9 3.6 1.4 0.1 setosa
+## 39 4.4 3.0 1.3 0.2 setosa
+## 40 5.1 3.4 1.5 0.2 setosa
+## 41 5.0 3.5 1.3 0.3 setosa
+## 42 4.5 2.3 1.3 0.3 setosa
+## 43 4.4 3.2 1.3 0.2 setosa
+## 44 5.0 3.5 1.6 0.6 setosa
+## 45 5.1 3.8 1.9 0.4 setosa
+## 46 4.8 3.0 1.4 0.3 setosa
+## 47 5.1 3.8 1.6 0.2 setosa
+## 48 4.6 3.2 1.4 0.2 setosa
+## 49 5.3 3.7 1.5 0.2 setosa
+## 50 5.0 3.3 1.4 0.2 setosa
+## 51 7.0 3.2 4.7 1.4 versicolor
+## 52 6.4 3.2 4.5 1.5 versicolor
+## 53 6.9 3.1 4.9 1.5 versicolor
+## 54 5.5 2.3 4.0 1.3 versicolor
+## 55 6.5 2.8 4.6 1.5 versicolor
+## 56 5.7 2.8 4.5 1.3 versicolor
+## 57 6.3 3.3 4.7 1.6 versicolor
+## 58 4.9 2.4 3.3 1.0 versicolor
+## 59 6.6 2.9 4.6 1.3 versicolor
+## 60 5.2 2.7 3.9 1.4 versicolor
+## 61 5.0 2.0 3.5 1.0 versicolor
+## 62 5.9 3.0 4.2 1.5 versicolor
+## 63 6.0 2.2 4.0 1.0 versicolor
+## 64 6.1 2.9 4.7 1.4 versicolor
+## 65 5.6 2.9 3.6 1.3 versicolor
+## 66 6.7 3.1 4.4 1.4 versicolor
+## 67 5.6 3.0 4.5 1.5 versicolor
+## 68 5.8 2.7 4.1 1.0 versicolor
+## 69 6.2 2.2 4.5 1.5 versicolor
+## 70 5.6 2.5 3.9 1.1 versicolor
+## 71 5.9 3.2 4.8 1.8 versicolor
+## 72 6.1 2.8 4.0 1.3 versicolor
+## 73 6.3 2.5 4.9 1.5 versicolor
+## 74 6.1 2.8 4.7 1.2 versicolor
+## 75 6.4 2.9 4.3 1.3 versicolor
+## 76 6.6 3.0 4.4 1.4 versicolor
+## 77 6.8 2.8 4.8 1.4 versicolor
+## 78 6.7 3.0 5.0 1.7 versicolor
+## 79 6.0 2.9 4.5 1.5 versicolor
+## 80 5.7 2.6 3.5 1.0 versicolor
+## 81 5.5 2.4 3.8 1.1 versicolor
+## 82 5.5 2.4 3.7 1.0 versicolor
+## 83 5.8 2.7 3.9 1.2 versicolor
+## 84 6.0 2.7 5.1 1.6 versicolor
+## 85 5.4 3.0 4.5 1.5 versicolor
+## 86 6.0 3.4 4.5 1.6 versicolor
+## 87 6.7 3.1 4.7 1.5 versicolor
+## 88 6.3 2.3 4.4 1.3 versicolor
+## 89 5.6 3.0 4.1 1.3 versicolor
+## 90 5.5 2.5 4.0 1.3 versicolor
+## 91 5.5 2.6 4.4 1.2 versicolor
+## 92 6.1 3.0 4.6 1.4 versicolor
+## 93 5.8 2.6 4.0 1.2 versicolor
+## 94 5.0 2.3 3.3 1.0 versicolor
+## 95 5.6 2.7 4.2 1.3 versicolor
+## 96 5.7 3.0 4.2 1.2 versicolor
+## 97 5.7 2.9 4.2 1.3 versicolor
+## 98 6.2 2.9 4.3 1.3 versicolor
+## 99 5.1 2.5 3.0 1.1 versicolor
+## 100 5.7 2.8 4.1 1.3 versicolor
+## 101 6.3 3.3 6.0 2.5 virginica
+## 102 5.8 2.7 5.1 1.9 virginica
+## 103 7.1 3.0 5.9 2.1 virginica
+## 104 6.3 2.9 5.6 1.8 virginica
+## 105 6.5 3.0 5.8 2.2 virginica
+## 106 7.6 3.0 6.6 2.1 virginica
+## 107 4.9 2.5 4.5 1.7 virginica
+## 108 7.3 2.9 6.3 1.8 virginica
+## 109 6.7 2.5 5.8 1.8 virginica
+## 110 7.2 3.6 6.1 2.5 virginica
+## 111 6.5 3.2 5.1 2.0 virginica
+## 112 6.4 2.7 5.3 1.9 virginica
+## 113 6.8 3.0 5.5 2.1 virginica
+## 114 5.7 2.5 5.0 2.0 virginica
+## 115 5.8 2.8 5.1 2.4 virginica
+## 116 6.4 3.2 5.3 2.3 virginica
+## 117 6.5 3.0 5.5 1.8 virginica
+## 118 7.7 3.8 6.7 2.2 virginica
+## 119 7.7 2.6 6.9 2.3 virginica
+## 120 6.0 2.2 5.0 1.5 virginica
+## 121 6.9 3.2 5.7 2.3 virginica
+## 122 5.6 2.8 4.9 2.0 virginica
+## 123 7.7 2.8 6.7 2.0 virginica
+## 124 6.3 2.7 4.9 1.8 virginica
+## 125 6.7 3.3 5.7 2.1 virginica
+## 126 7.2 3.2 6.0 1.8 virginica
+## 127 6.2 2.8 4.8 1.8 virginica
+## 128 6.1 3.0 4.9 1.8 virginica
+## 129 6.4 2.8 5.6 2.1 virginica
+## 130 7.2 3.0 5.8 1.6 virginica
+## 131 7.4 2.8 6.1 1.9 virginica
+## 132 7.9 3.8 6.4 2.0 virginica
+## 133 6.4 2.8 5.6 2.2 virginica
+## 134 6.3 2.8 5.1 1.5 virginica
+## 135 6.1 2.6 5.6 1.4 virginica
+## 136 7.7 3.0 6.1 2.3 virginica
+## 137 6.3 3.4 5.6 2.4 virginica
+## 138 6.4 3.1 5.5 1.8 virginica
+## 139 6.0 3.0 4.8 1.8 virginica
+## 140 6.9 3.1 5.4 2.1 virginica
+## 141 6.7 3.1 5.6 2.4 virginica
+## 142 6.9 3.1 5.1 2.3 virginica
+## 143 5.8 2.7 5.1 1.9 virginica
+## 144 6.8 3.2 5.9 2.3 virginica
+## 145 6.7 3.3 5.7 2.5 virginica
+## 146 6.7 3.0 5.2 2.3 virginica
+## 147 6.3 2.5 5.0 1.9 virginica
+## 148 6.5 3.0 5.2 2.0 virginica
+## 149 6.2 3.4 5.4 2.3 virginica
+## 150 5.9 3.0 5.1 1.8 virginica
+pairs(iris)
+
+#I didnt see an explicit answer to these, and I'm not sure how to answer, but if I could, how could I tell which pair is which?
+Finally use the knitr function to generate an html document from your work. If you have time, try to change some of the output using different commands from the RMarkdown cheat sheet.
Commit, Push and Pull Request your work back to the main branch of the repository