Intro

R Markdown Notebook

This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com. When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document.

Please refer to the Rmarkdown cheat sheet or this Rmarkdown for beginners video tutorial for a quick guide on syntax.

Packages for tables in R

Several packages support making beautiful tables with R, such as:

But we will use knitr instead in the next section.

Data exploration

Table

I am using the built in mtcars dataset in R. Please refer to R documentation on mtcars for description of data fields.

Data on the first 5 cars in the dataset are shown with knitr’s kable function.

This knitr table shows the first 5 rows of the mtcars dataset.
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.

This knitr table shows the first 5 rows of the built in dataset mtcars.
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2

Data summary

Data summary showing basic statistics, in this case echo = TRUE was added to the code chunk to enable printing the R code.

summary(mtcars)
      mpg             cyl             disp             hp       
 Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
 1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
 Median :19.20   Median :6.000   Median :196.3   Median :123.0  
 Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
 3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
 Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
      drat             wt             qsec             vs        
 Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
 1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
 Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
 Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
 3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
 Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
       am              gear            carb      
 Min.   :0.0000   Min.   :3.000   Min.   :1.000  
 1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
 Median :0.0000   Median :4.000   Median :2.000  
 Mean   :0.4062   Mean   :3.688   Mean   :2.812  
 3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
 Max.   :1.0000   Max.   :5.000   Max.   :8.000  

As an example for inline R code in Rmarkdown, the median of miles per gallon is 19.2 and the median of horse power is 123.

Data visualisation - basic plot

` Basic plot showing horse power vs miles per gallon.

plot(mtcars$hp,mtcars$mpg)

Data visualisation - advanced plot (ggplot2)

A nicer looking plot using ggplot2. To change the theme, check other options on ggthemes page.

library(ggplot2)
library(dplyr)
library(ggthemes)
ggplot(data=mtcars) + 
  geom_point(mapping=aes(x=hp, y=mpg,color=hp)) +
  labs(title="Miles per gallon vs. horse power",
       subtitle="Data: built in mtcars dataset",
       x="Horse power",
       y="Miles per gallon")+
  theme_classic()

Regression

A simple regression plot is shown.

Input variable: Horse power Output variable: Miles per gallon

x<-mtcars$hp
y<-mtcars$mpg
plot(x, y, main = "Linear regression - miles per gallon vs horse power",
     xlab = "Horse power", ylab = "Miles per gallon",
     pch = 19, frame = FALSE)
abline(lm(y ~ x, data = mtcars), col = "blue")

summary(lm(y~x))

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.7121 -2.1122 -0.8854  1.5819  8.2360 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 30.09886    1.63392  18.421  < 2e-16 ***
x           -0.06823    0.01012  -6.742 1.79e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.863 on 30 degrees of freedom
Multiple R-squared:  0.6024,    Adjusted R-squared:  0.5892 
F-statistic: 45.46 on 1 and 30 DF,  p-value: 1.788e-07

Regression with a smoother

The impact of horspower on miles per gallon is shown on the chart below using a smoother.

ggplot(mtcars, aes(hp, mpg)) +
  stat_smooth() + geom_point() +
  ylab("Miles per Gallon") +
  xlab ("No. of Horsepower") +
  ggtitle("Impact of Number of Horsepower on Miles per gallon")
`geom_smooth()` using method = 'loess' and formula 'y ~ x'

Thanks you!

Caption

LS0tDQp0aXRsZTogIlJNYXJrZG93biBOb3RlYm9vayBkZW1vIC0gQ2FycyINCmF1dGhvcjogIkJlbmNlIFphdXBwZXIiDQpkYXRlOiAiNyBEZWNlbWJlciAyMDIwIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiBodG1sX25vdGVib29rDQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMgSW50cm8NCg0KIyMgUiBNYXJrZG93biBOb3RlYm9vaw0KDQpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiANCg0KVHJ5IGV4ZWN1dGluZyB0aGlzIGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqUnVuKiBidXR0b24gd2l0aGluIHRoZSBjaHVuayBvciBieSBwbGFjaW5nIHlvdXIgY3Vyc29yIGluc2lkZSBpdCBhbmQgcHJlc3NpbmcgKkN0cmwrU2hpZnQrRW50ZXIqLiANCg0KVGhpcyBpcyBhbiBSIE1hcmtkb3duIGRvY3VtZW50LiBNYXJrZG93biBpcyBhIHNpbXBsZSBmb3JtYXR0aW5nIHN5bnRheCBmb3IgYXV0aG9yaW5nIEhUTUwsIFBERiwgYW5kIE1TIFdvcmQgZG9jdW1lbnRzLiBGb3IgbW9yZSBkZXRhaWxzIG9uIHVzaW5nIFIgTWFya2Rvd24gc2VlIDxodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tPi4gV2hlbiB5b3UgY2xpY2sgdGhlICoqS25pdCoqIGJ1dHRvbiBhIGRvY3VtZW50IHdpbGwgYmUgZ2VuZXJhdGVkIHRoYXQgaW5jbHVkZXMgYm90aCBjb250ZW50IGFzIHdlbGwgYXMgdGhlIG91dHB1dCBvZiBhbnkgZW1iZWRkZWQgUiBjb2RlIGNodW5rcyB3aXRoaW4gdGhlIGRvY3VtZW50LiANCg0KUGxlYXNlIHJlZmVyIHRvIHRoZSBbUm1hcmtkb3duIGNoZWF0IHNoZWV0XShodHRwczovL3JzdHVkaW8uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE2LzAzL3JtYXJrZG93bi1jaGVhdHNoZWV0LTIuMC5wZGY/X2dhPTIuNTIxMjk4MS43MjY2NzQxNDcuMTYwNzIxNjM0OS01MTEyOTQ0NDUuMTYwNzIxNjM0OSkgb3IgdGhpcyBbUm1hcmtkb3duIGZvciBiZWdpbm5lcnMgdmlkZW8gdHV0b3JpYWxdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9dHlGam9DMXU2cDApIGZvciBhIHF1aWNrIGd1aWRlIG9uIHN5bnRheC4NCg0KIyMgUGFja2FnZXMgZm9yIHRhYmxlcyBpbiBSDQoNClNldmVyYWwgcGFja2FnZXMgc3VwcG9ydCBtYWtpbmcgYmVhdXRpZnVsIHRhYmxlcyB3aXRoIFIsIHN1Y2ggYXM6DQoNCiogW3h0YWJsZV0oaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvd2ViL3BhY2thZ2VzL3h0YWJsZS8pDQoqIFtzdGFyZ2F6ZXJdKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy9zdGFyZ2F6ZXIvKQ0KKiBbcGFuZGVyXShodHRwOi8vcmFwcG9ydGVyLmdpdGh1Yi5pby9wYW5kZXIvKQ0KKiBbdGFibGVzXShodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvdGFibGVzLykNCiogW2FzY2lpXShodHRwOi8vZXVzZWJlLmdpdGh1Yi5pby9hc2NpaS8pDQoqIGV0Yy4NCg0KQnV0IHdlIHdpbGwgdXNlIGtuaXRyIGluc3RlYWQgaW4gdGhlIG5leHQgc2VjdGlvbi4NCg0KIyBEYXRhIGV4cGxvcmF0aW9uDQoNCiMjIFRhYmxlDQoNCkkgYW0gdXNpbmcgdGhlIGJ1aWx0IGluICptdGNhcnMqIGRhdGFzZXQgaW4gUi4gUGxlYXNlIHJlZmVyIHRvIFtSIGRvY3VtZW50YXRpb24gb24gbXRjYXJzXShodHRwczovL3d3dy5yZG9jdW1lbnRhdGlvbi5vcmcvcGFja2FnZXMvZGF0YXNldHMvdmVyc2lvbnMvMy42LjIvdG9waWNzL210Y2FycykgZm9yIGRlc2NyaXB0aW9uIG9mIGRhdGEgZmllbGRzLg0KDQpEYXRhIG9uIHRoZSBmaXJzdCA1IGNhcnMgaW4gdGhlIGRhdGFzZXQgYXJlIHNob3duIHdpdGgga25pdHIncyBga2FibGVgIGZ1bmN0aW9uLg0KDQpgYGB7ciBlY2hvPUZBTFNFLCByZXN1bHRzPSdhc2lzJ30NCmxpYnJhcnkoa25pdHIpDQprYWJsZShtdGNhcnNbMTo1LF0sY2FwdGlvbj0iVGhpcyAqa25pdHIqIHRhYmxlIHNob3dzIHRoZSBmaXJzdCA1IHJvd3Mgb2YgdGhlICptdGNhcnMqIGRhdGFzZXQuIikNCmBgYA0KDQpOb3RlIHRoYXQgdGhlIGBlY2hvID0gRkFMU0VgIHBhcmFtZXRlciB3YXMgYWRkZWQgdG8gdGhlIGNvZGUgY2h1bmsgdG8gcHJldmVudCBwcmludGluZyBvZiB0aGUgUiBjb2RlIHRoYXQgZ2VuZXJhdGVkIHRoZSBwbG90Lg0KDQpgYGB7ciBlY2hvPUZBTFNFLCByZXN1bHRzPSdhc2lzJ30NCmxpYnJhcnkoa25pdHIpDQprYWJsZShtdGNhcnNbMTo1LF0sY2FwdGlvbj0iVGhpcyAqa25pdHIqIHRhYmxlIHNob3dzIHRoZSBmaXJzdCA1IHJvd3Mgb2YgdGhlIGJ1aWx0IGluIGRhdGFzZXQgKm10Y2FycyouIikNCmBgYA0KDQoNCiMjIERhdGEgc3VtbWFyeQ0KDQpEYXRhIHN1bW1hcnkgc2hvd2luZyBiYXNpYyBzdGF0aXN0aWNzLCBpbiB0aGlzIGNhc2UgYGVjaG8gPSBUUlVFYCB3YXMgYWRkZWQgdG8gdGhlIGNvZGUgY2h1bmsgdG8gZW5hYmxlIHByaW50aW5nIHRoZSBSIGNvZGUuDQoNCmBgYHtyIGVjaG89VFJVRX0NCnN1bW1hcnkobXRjYXJzKQ0KYGBgDQoNCkFzIGFuIGV4YW1wbGUgZm9yIGlubGluZSBSIGNvZGUgaW4gUm1hcmtkb3duLCB0aGUgbWVkaWFuIG9mIG1pbGVzIHBlciBnYWxsb24gaXMgYHIgbWVkaWFuKG10Y2FycyRtcGcpYCBhbmQgdGhlIG1lZGlhbiBvZiBob3JzZSBwb3dlciBpcyBgciBtZWRpYW4obXRjYXJzJGhwKWAuIA0KDQojIyBEYXRhIHZpc3VhbGlzYXRpb24gLSBiYXNpYyBwbG90DQpgDQpCYXNpYyBwbG90IHNob3dpbmcgKmhvcnNlIHBvd2VyKiB2cyAqbWlsZXMgcGVyIGdhbGxvbiouDQoNCmBgYHtyIGVjaG89VFJVRX0NCnBsb3QobXRjYXJzJGhwLG10Y2FycyRtcGcpDQpgYGANCg0KDQojIyBEYXRhIHZpc3VhbGlzYXRpb24gLSBhZHZhbmNlZCBwbG90IChnZ3Bsb3QyKQ0KDQpBIG5pY2VyIGxvb2tpbmcgcGxvdCB1c2luZyAqZ2dwbG90MiouIFRvIGNoYW5nZSB0aGUgdGhlbWUsIGNoZWNrIG90aGVyIG9wdGlvbnMgb24gW2dndGhlbWVzXShodHRwczovL2dncGxvdDIudGlkeXZlcnNlLm9yZy9yZWZlcmVuY2UvZ2d0aGVtZS5odG1sKSBwYWdlLg0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2d0aGVtZXMpDQpnZ3Bsb3QoZGF0YT1tdGNhcnMpICsgDQogIGdlb21fcG9pbnQobWFwcGluZz1hZXMoeD1ocCwgeT1tcGcsY29sb3I9aHApKSArDQogIGxhYnModGl0bGU9Ik1pbGVzIHBlciBnYWxsb24gdnMuIGhvcnNlIHBvd2VyIiwNCiAgICAgICBzdWJ0aXRsZT0iRGF0YTogYnVpbHQgaW4gbXRjYXJzIGRhdGFzZXQiLA0KICAgICAgIHg9IkhvcnNlIHBvd2VyIiwNCiAgICAgICB5PSJNaWxlcyBwZXIgZ2FsbG9uIikrDQogIHRoZW1lX2NsYXNzaWMoKQ0KYGBgDQoNCg0KIyMgUmVncmVzc2lvbg0KDQpBIHNpbXBsZSByZWdyZXNzaW9uIHBsb3QgaXMgc2hvd24uDQoNCklucHV0IHZhcmlhYmxlOiAqSG9yc2UgcG93ZXIqDQpPdXRwdXQgdmFyaWFibGU6ICpNaWxlcyBwZXIgZ2FsbG9uKg0KDQpgYGB7cn0NCng8LW10Y2FycyRocA0KeTwtbXRjYXJzJG1wZw0KcGxvdCh4LCB5LCBtYWluID0gIkxpbmVhciByZWdyZXNzaW9uIC0gbWlsZXMgcGVyIGdhbGxvbiB2cyBob3JzZSBwb3dlciIsDQogICAgIHhsYWIgPSAiSG9yc2UgcG93ZXIiLCB5bGFiID0gIk1pbGVzIHBlciBnYWxsb24iLA0KICAgICBwY2ggPSAxOSwgZnJhbWUgPSBGQUxTRSkNCmFibGluZShsbSh5IH4geCwgZGF0YSA9IG10Y2FycyksIGNvbCA9ICJibHVlIikNCg0Kc3VtbWFyeShsbSh5fngpKQ0KYGBgDQojIyBSZWdyZXNzaW9uIHdpdGggYSBzbW9vdGhlcg0KDQpUaGUgaW1wYWN0IG9mIGhvcnNwb3dlciBvbiBtaWxlcyBwZXIgZ2FsbG9uIGlzIHNob3duIG9uIHRoZSBjaGFydCBiZWxvdyB1c2luZyBhIHNtb290aGVyLg0KDQoNCmBgYHtyfQ0KZ2dwbG90KG10Y2FycywgYWVzKGhwLCBtcGcpKSArDQogIHN0YXRfc21vb3RoKCkgKyBnZW9tX3BvaW50KCkgKw0KICB5bGFiKCJNaWxlcyBwZXIgR2FsbG9uIikgKw0KICB4bGFiICgiTm8uIG9mIEhvcnNlcG93ZXIiKSArDQogIGdndGl0bGUoIkltcGFjdCBvZiBOdW1iZXIgb2YgSG9yc2Vwb3dlciBvbiBNaWxlcyBwZXIgZ2FsbG9uIikNCmBgYA0KDQoNCiMjIFB1YmxpYyBsaW5rDQoNCllvdSBjYW4gZmluZCB0aGlzIGRvY3VtZW50IHZpYSB0aGlzIFtScHVicyBsaW5rXShodHRwczovL3JwdWJzLmNvbS9iZW5jZS16YXVwcGVyLzcwMDY3MykNCg0KWW91IGNhbiByZWdpc3RlciBhbiBhY2NvdW50IG9uICpScHVicyogdmlhIHRoaXMgW2xpbmtdKGh0dHBzOi8vd3d3LnJwdWJzLmNvbS8pIGFuZCBzaGFyZSB5b3VyIGNvZGUgb3IgUm1hcmtkb3duIGRvY3VtZW50cyB0aGVyZS4NCg0KDQojIyBUaGFua3MgeW91IQ0KDQohW0NhcHRpb25dKGNvcnZldHRlLmpwZykNCg0KDQoNCg0K