library(tidyverse)
library(openintro)
library(DBI)
library(RMySQL)

TRANSFER DATA FROM SQL DATABASE TO R DATAFRAME

The following code is used to run a connection between the built table that was stored in the class SQL database and this R dataframe. Additionally I can confirm that the data is loaded in with the code in line 25

## [1] "movieratings"

RETRIVE THE DATA

After running the connection to see if the data has successfully loaded in, I will now demonstrate the printing/display of the table data that had been built back in MySQL using the following code:

table_data <- dbGetQuery(con, "SELECT * FROM movieratings;")
print(table_data)
##    ID            MovieName RaterName Rating
## 1   1  Joker: Folie à Deux      Matt      2
## 2   2  Joker: Folie à Deux     Jesus      1
## 3   3  Joker: Folie à Deux      Alex      2
## 4   4  Joker: Folie à Deux    Albert      1
## 5   5  Joker: Folie à Deux   Jeffery      1
## 6   6               Wicked      Matt      1
## 7   7               Wicked     Jesus      3
## 8   8               Wicked      Alex      5
## 9   9               Wicked    Albert      3
## 10 10               Wicked   Jeffery      4
## 11 11 Sonic the Hedgehog 3      Matt      5
## 12 12 Sonic the Hedgehog 3     Jesus      4
## 13 13 Sonic the Hedgehog 3      Alex      4
## 14 14 Sonic the Hedgehog 3    Albert      3
## 15 15 Sonic the Hedgehog 3   Jeffery      4
## 16 16        The Substance      Matt      4
## 17 17        The Substance     Jesus      5
## 18 18        The Substance      Alex      5
## 19 19        The Substance    Albert      1
## 20 20        The Substance   Jeffery      4
## 21 21              Moana 2      Matt      4
## 22 22              Moana 2     Jesus      5
## 23 23              Moana 2      Alex      2
## 24 24              Moana 2    Albert      1
## 25 25              Moana 2   Jeffery      2
## 26 26             Babygirl      Matt      3
## 27 27             Babygirl     Jesus      4
## 28 28             Babygirl      Alex      4
## 29 29             Babygirl    Albert      3
## 30 30             Babygirl   Jeffery      3

Missing data strategy (for R)

In the following example, and reminiscent of last week’s code, I use a code to remove all rows without any valid data or “NA.” This code is effective approach to implement because removing all void rows keeps the data overall concise and without any unnecessary data cluttering the display.

cleaned_data <- table_data %>%
  drop_na()

Missing data strategy (for SQL)

Additionally, here is code that would normally remove the “NA” invalid values, or in this case, “null” in SQL. Displayed is a common way to resolve this issue, similarly to the approach for R, involving removing the unnecessary null values/invalid data. More specifically and more realistically, from the Rating column.

DELETE FROM MovieRatings
WHERE Rating IS NULL;

LS0tDQp0aXRsZTogIkRBVEEgNjA3IFdlZWsgMiINCmF1dGhvcjogIkd1bGxpdCBOYXZhcnJldGUiDQpkYXRlOiAiMi85LzI1Ig0Kb3V0cHV0OiBvcGVuaW50cm86OmxhYl9yZXBvcnQNCi0tLQ0KDQpgYGB7ciBsb2FkLXBhY2thZ2VzLCBtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KG9wZW5pbnRybykNCmxpYnJhcnkoREJJKQ0KbGlicmFyeShSTXlTUUwpDQpgYGANCg0KIyMjIFRSQU5TRkVSIERBVEEgRlJPTSBTUUwgREFUQUJBU0UgVE8gUiBEQVRBRlJBTUUNCg0KVGhlIGZvbGxvd2luZyBjb2RlIGlzIHVzZWQgdG8gcnVuIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBidWlsdCB0YWJsZSB0aGF0IHdhcyBzdG9yZWQgaW4gdGhlIGNsYXNzIFNRTCBkYXRhYmFzZSBhbmQgdGhpcyBSIGRhdGFmcmFtZS4gQWRkaXRpb25hbGx5IEkgY2FuIGNvbmZpcm0gdGhhdCB0aGUgZGF0YSBpcyBsb2FkZWQgaW4gd2l0aCB0aGUgY29kZSBpbiBsaW5lIDI1DQpgYGB7ciBNeVNRTC1jb25uZWN0aW9uLCBlY2hvPUZBTFNFfQ0KY29uIDwtIGRiQ29ubmVjdChSTXlTUUw6Ok15U1FMKCksDQogICAgICAgICAgICAgICAgIGRibmFtZSA9ICJndWxsaXQubmF2YXJyZXRlMjYiLCANCiAgICAgICAgICAgICAgICAgaG9zdCA9ICJjdW55NjA3c3FsLm15c3FsLmRhdGFiYXNlLmF6dXJlLmNvbSIsIA0KICAgICAgICAgICAgICAgICB1c2VyID0gImd1bGxpdC5uYXZhcnJldGUyNiIsIA0KICAgICAgICAgICAgICAgICBwYXNzd29yZCA9ICI4ZjY0ZDI2ODY0ZWM4N2U0IiwgDQogICAgICAgICAgICAgICAgIHBvcnQgPSAzMzA2KQ0KZGJMaXN0VGFibGVzKGNvbikNCmBgYA0KIyMjIFJFVFJJVkUgVEhFIERBVEENCg0KQWZ0ZXIgcnVubmluZyB0aGUgY29ubmVjdGlvbiB0byBzZWUgaWYgdGhlIGRhdGEgaGFzIHN1Y2Nlc3NmdWxseSBsb2FkZWQgaW4sIEkgd2lsbCBub3cgZGVtb25zdHJhdGUgdGhlIHByaW50aW5nL2Rpc3BsYXkgb2YgdGhlIHRhYmxlIGRhdGEgdGhhdCBoYWQgYmVlbiBidWlsdCBiYWNrIGluIE15U1FMIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29kZToNCmBgYHtyIE15U1FMLXRhYmxlLWRhdGEsIGVjaG89VFJVRX0NCnRhYmxlX2RhdGEgPC0gZGJHZXRRdWVyeShjb24sICJTRUxFQ1QgKiBGUk9NIG1vdmllcmF0aW5nczsiKQ0KcHJpbnQodGFibGVfZGF0YSkNCmBgYA0KDQojIyMgTWlzc2luZyBkYXRhIHN0cmF0ZWd5IChmb3IgUikNCg0KSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBhbmQgcmVtaW5pc2NlbnQgb2YgbGFzdCB3ZWVrJ3MgY29kZSwgSSB1c2UgYSBjb2RlIHRvIHJlbW92ZSBhbGwgcm93cyB3aXRob3V0IGFueSB2YWxpZCBkYXRhIG9yICJOQS4iIFRoaXMgY29kZSBpcyBlZmZlY3RpdmUgYXBwcm9hY2ggdG8gaW1wbGVtZW50IGJlY2F1c2UgcmVtb3ZpbmcgYWxsIHZvaWQgcm93cyBrZWVwcyB0aGUgZGF0YSBvdmVyYWxsIGNvbmNpc2UgYW5kIHdpdGhvdXQgYW55IHVubmVjZXNzYXJ5IGRhdGEgY2x1dHRlcmluZyB0aGUgZGlzcGxheS4NCmBgYHtyIG1pc3NpbmctZGF0YS1zdHJhdCwgZWNobz1UUlVFfQ0KY2xlYW5lZF9kYXRhIDwtIHRhYmxlX2RhdGEgJT4lDQogIGRyb3BfbmEoKQ0KYGBgDQoNCiMjIyBNaXNzaW5nIGRhdGEgc3RyYXRlZ3kgKGZvciBTUUwpDQoNCkFkZGl0aW9uYWxseSwgaGVyZSBpcyBjb2RlIHRoYXQgd291bGQgbm9ybWFsbHkgcmVtb3ZlIHRoZSAiTkEiIGludmFsaWQgdmFsdWVzLCBvciBpbiB0aGlzIGNhc2UsICJudWxsIiBpbiBTUUwuIERpc3BsYXllZCBpcyBhIGNvbW1vbiB3YXkgdG8gcmVzb2x2ZSB0aGlzIGlzc3VlLCBzaW1pbGFybHkgdG8gdGhlIGFwcHJvYWNoIGZvciBSLCBpbnZvbHZpbmcgcmVtb3ZpbmcgdGhlIHVubmVjZXNzYXJ5IG51bGwgdmFsdWVzL2ludmFsaWQgZGF0YS4gTW9yZSBzcGVjaWZpY2FsbHkgYW5kIG1vcmUgcmVhbGlzdGljYWxseSwgZnJvbSB0aGUgUmF0aW5nIGNvbHVtbi4NCmBgYHtyIG1pc3NpbmctZGF0YS1zdHJhdC1TUUwsIGVjaG89VFJVRSwgZXZhbD1GQUxTRX0NCkRFTEVURSBGUk9NIE1vdmllUmF0aW5ncw0KV0hFUkUgUmF0aW5nIElTIE5VTEw7DQpgYGANCi4uLg==