Primero la Sección de Librerías de Funciones:

# rownames(installed.packages())
list.of.packages <- c(
"arm" , 
"broom" , 
"corrplot" , 
"cowplot" , 
"datasets" , 
"datasets" , 
"dplyr" , 
"eeptools" , 
"estimatr" , 
"FinCal" , 
"formatR" , 
"ggfortify" , 
"ggpubr" , 
"haven" , 
"Hmisc" , 
"infer" , 
"knitr" , 
"lmtest" , 
"margins" , 
"nycflights13" , 
"psych" , 
"readxl" , 
"reshape2" , 
"rms" , 
"skimr" , 
"stargazer" , 
"stringr" , 
"survival" , 
"tableone" , 
"tidyr" , 
"tidyverse" , 
"TTR" , 
"wooldridge" , 
"xlsx" 
)
has   <- list.of.packages %in% rownames(installed.packages())
if(any(!has)) install.packages(new.packages[!has])

Llamada a LIBRERIAS:

# library(arm) 
# library(broom) 
# library(corrplot) 
# library(cowplot) 
# library(datasets) 
library(dplyr) 
# library(eeptools) 
# library(estimatr) 
library(FinCal) 
# library(formatR) 
# library(ggfortify) 
# library(ggpubr) 
 library(ggplot2) 
# library(haven) #para la lectura de archivos DTA de Stata
# library(Hmisc) 
# library(infer) 
# library(knitr) 
# library(lmtest) 
# library(margins) 
# library(nycflights13) 
# library(psych) 
library(readxl) 
library(reshape2) #para hacer ReShape (Pivot Tables)
# library(rms) 
# library(skimr) 
# library(stargazer) 
# library(stringr) 
# library(survival) 
# library(tableone) 
library(tidyr) #para hacer ReShape (Pivot Tables)
library(tidyverse) 
library(TTR) #para las graficas de series de tiempo
# library(wooldridge) 
library(xlsx) #para exportar a Excel file

A partir de aquí la Sección de Importación de Datasets:

getwd() #get to show me the current Working Directory 
[1] "I:/001.7 CURSO-02 Lenguaje R Semillero/21.09.24.A Proyecto_01"
### Cargando BBDD: n5ay5qadfe7e1nnsv5s01oe1x62mq51j.csv ####
# Version de BBDD: 2021.09.24 v1
# RUTA: https://ibm.box.com/shared/static/

# code to download the dataset
download.file("https://ibm.box.com/shared/static/n5ay5qadfe7e1nnsv5s01oe1x62mq51j.csv", destfile="movies-db.csv")
trying URL 'https://ibm.box.com/shared/static/n5ay5qadfe7e1nnsv5s01oe1x62mq51j.csv'
Content type 'text/csv' length 1424 bytes
downloaded 1424 bytes
movies_data <- read.csv("movies-db.csv", header=TRUE, sep=",")
movies_data

REVISION RAPIDA DEL DATAFRAME:

#View(movies_data)
summary(movies_data) # Summary Estadístico.
     name                year        length_min        genre           average_rating  cost_millions        foreign   
 Length:30          Min.   :1936   Min.   : 81.00   Length:30          Min.   :5.200   Min.   :  0.400   Min.   :0.0  
 Class :character   1st Qu.:1988   1st Qu.: 99.25   Class :character   1st Qu.:7.925   1st Qu.:  3.525   1st Qu.:0.0  
 Mode  :character   Median :1998   Median :110.50   Mode  :character   Median :8.300   Median : 13.000   Median :0.0  
                    Mean   :1996   Mean   :116.80                      Mean   :8.103   Mean   : 22.300   Mean   :0.4  
                    3rd Qu.:2008   3rd Qu.:124.25                      3rd Qu.:8.500   3rd Qu.: 25.000   3rd Qu.:1.0  
                    Max.   :2015   Max.   :179.00                      Max.   :9.300   Max.   :165.000   Max.   :1.0  
 age_restriction
 Min.   : 0.00  
 1st Qu.:12.00  
 Median :14.00  
 Mean   :12.93  
 3rd Qu.:16.00  
 Max.   :18.00  
head(movies_data) # Primeros 6.
names(movies_data) # Names de columnas.
[1] "name"            "year"            "length_min"      "genre"           "average_rating"  "cost_millions"   "foreign"        
[8] "age_restriction"
print(is.data.frame(movies_data))
[1] TRUE
#attach(movies_data) #only if there is only 1 dataset 
# CONTENIDO DE TABLA:
# movies_data es la tabla con datos de películas.

A partir de aquí inicia el Cuerpo del Script:

my_data <- movies_data
akira <- my_data[my_data$name == "Akira", "average_rating"]
akira
[1] 8.1

Creo la Function isGoodRating:

isGoodRating <- function(rating, threshold = 7){
    if(rating < threshold){
        return("NO") # return NO if the movie rating is less than the threshold
    }else{
        return("YES") # otherwise return YES
    }
}

Llamo a mi function:

isGoodRating(akira)
[1] "YES"
isGoodRating(8, threshold = 8.5)
[1] "NO"

CREACION DE LA FUNCION 2: Now, let’s put this all together into a function, that can take any moviename and return a YES or NO for whether or not we should watch it.

watchMovie <- function(data, moviename){
    rating <- data[data["name"] == moviename,"average_rating"]
    return(isGoodRating(rating))
}

LLAMADA A LA FUNCION 2:

watchMovie(my_data, "Akira")
[1] "YES"

Make sure you take the time to understand the function above. Notice how the function expects two inputs: data and moviename, and so when we use the function, we must also input two arguments.

But what if we only want to watch really good movies? How do we set our rating threshold that we created earlier? Here’s how:

REDEFINO LA FUNCION watchMovie:

watchMovie <- function(data, moviename, my_threshold){
    rating <- data[data$name == moviename,"average_rating"]
    return(isGoodRating(rating, threshold = my_threshold))
}

Now our watchMovie takes three inputs: data, moviename and my_threshold:

watchMovie(my_data, "Akira", 7)
[1] "YES"

What if we want to still set our default threshold to be 7? Here’s how we can do it:

DEFINO LA FUNCION watchMOvie por 3ra vez:

watchMovie <- function(data, moviename, my_threshold = 7){
    rating <- data[data[,1] == moviename,"average_rating"]
    return(isGoodRating(rating, threshold = my_threshold))
}

LLAMO A LA FUNCION 2 (VERSION 3):

watchMovie(my_data,"Akira")
[1] "YES"
LS0tDQp0aXRsZTogIk1hZXN0cmEgIzIgZGUgUiBOb3RlYm9vayBFQ1IiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCmF1dGhvcjogIkluZy4gRXJuZXN0byBDYW5jaG8tUm9kcmlndWV6Ig0KZGF0ZTogIjIwMjEuMDkuMjQiDQotLS0NCg0KUHJpbWVybyBsYSBTZWNjacOzbiBkZSBMaWJyZXLDrWFzIGRlIEZ1bmNpb25lczogDQoNCmBgYHtyIElOU1RBTEFDSU9OIExJQlJFUklBUyB9DQojIHJvd25hbWVzKGluc3RhbGxlZC5wYWNrYWdlcygpKQ0KbGlzdC5vZi5wYWNrYWdlcyA8LSBjKA0KImFybSIgLCANCiJicm9vbSIgLCANCiJjb3JycGxvdCIgLCANCiJjb3dwbG90IiAsIA0KImRhdGFzZXRzIiAsIA0KImRhdGFzZXRzIiAsIA0KImRwbHlyIiAsIA0KImVlcHRvb2xzIiAsIA0KImVzdGltYXRyIiAsIA0KIkZpbkNhbCIgLCANCiJmb3JtYXRSIiAsIA0KImdnZm9ydGlmeSIgLCANCiJnZ3B1YnIiICwgDQoiaGF2ZW4iICwgDQoiSG1pc2MiICwgDQoiaW5mZXIiICwgDQoia25pdHIiICwgDQoibG10ZXN0IiAsIA0KIm1hcmdpbnMiICwgDQoibnljZmxpZ2h0czEzIiAsIA0KInBzeWNoIiAsIA0KInJlYWR4bCIgLCANCiJyZXNoYXBlMiIgLCANCiJybXMiICwgDQoic2tpbXIiICwgDQoic3RhcmdhemVyIiAsIA0KInN0cmluZ3IiICwgDQoic3Vydml2YWwiICwgDQoidGFibGVvbmUiICwgDQoidGlkeXIiICwgDQoidGlkeXZlcnNlIiAsIA0KIlRUUiIgLCANCiJ3b29sZHJpZGdlIiAsIA0KInhsc3giIA0KKQ0KaGFzICAgPC0gbGlzdC5vZi5wYWNrYWdlcyAlaW4lIHJvd25hbWVzKGluc3RhbGxlZC5wYWNrYWdlcygpKQ0KaWYoYW55KCFoYXMpKSBpbnN0YWxsLnBhY2thZ2VzKG5ldy5wYWNrYWdlc1shaGFzXSkNCg0KYGBgDQoNCg0KTGxhbWFkYSBhIExJQlJFUklBUzoNCmBgYHtyIExMQU1BREEgQSBMSUJSRVJJQVN9DQojIGxpYnJhcnkoYXJtKSANCiMgbGlicmFyeShicm9vbSkgDQojIGxpYnJhcnkoY29ycnBsb3QpIA0KIyBsaWJyYXJ5KGNvd3Bsb3QpIA0KIyBsaWJyYXJ5KGRhdGFzZXRzKSANCmxpYnJhcnkoZHBseXIpIA0KIyBsaWJyYXJ5KGVlcHRvb2xzKSANCiMgbGlicmFyeShlc3RpbWF0cikgDQpsaWJyYXJ5KEZpbkNhbCkgDQojIGxpYnJhcnkoZm9ybWF0UikgDQojIGxpYnJhcnkoZ2dmb3J0aWZ5KSANCiMgbGlicmFyeShnZ3B1YnIpIA0KIGxpYnJhcnkoZ2dwbG90MikgDQojIGxpYnJhcnkoaGF2ZW4pICNwYXJhIGxhIGxlY3R1cmEgZGUgYXJjaGl2b3MgRFRBIGRlIFN0YXRhDQojIGxpYnJhcnkoSG1pc2MpIA0KIyBsaWJyYXJ5KGluZmVyKSANCiMgbGlicmFyeShrbml0cikgDQojIGxpYnJhcnkobG10ZXN0KSANCiMgbGlicmFyeShtYXJnaW5zKSANCiMgbGlicmFyeShueWNmbGlnaHRzMTMpIA0KIyBsaWJyYXJ5KHBzeWNoKSANCmxpYnJhcnkocmVhZHhsKSANCmxpYnJhcnkocmVzaGFwZTIpICNwYXJhIGhhY2VyIFJlU2hhcGUgKFBpdm90IFRhYmxlcykNCiMgbGlicmFyeShybXMpIA0KIyBsaWJyYXJ5KHNraW1yKSANCiMgbGlicmFyeShzdGFyZ2F6ZXIpIA0KIyBsaWJyYXJ5KHN0cmluZ3IpIA0KIyBsaWJyYXJ5KHN1cnZpdmFsKSANCiMgbGlicmFyeSh0YWJsZW9uZSkgDQpsaWJyYXJ5KHRpZHlyKSAjcGFyYSBoYWNlciBSZVNoYXBlIChQaXZvdCBUYWJsZXMpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkgDQpsaWJyYXJ5KFRUUikgI3BhcmEgbGFzIGdyYWZpY2FzIGRlIHNlcmllcyBkZSB0aWVtcG8NCiMgbGlicmFyeSh3b29sZHJpZGdlKSANCmxpYnJhcnkoeGxzeCkgI3BhcmEgZXhwb3J0YXIgYSBFeGNlbCBmaWxlDQoNCmBgYA0KDQoNCkEgcGFydGlyIGRlIGFxdcOtIGxhIFNlY2Npw7NuIGRlIEltcG9ydGFjacOzbiBkZSBEYXRhc2V0czoNCmBgYHtyIERBVEEgfQ0KZ2V0d2QoKSAjZ2V0IHRvIHNob3cgbWUgdGhlIGN1cnJlbnQgV29ya2luZyBEaXJlY3RvcnkgDQojIyMgQ2FyZ2FuZG8gQkJERDogbjVheTVxYWRmZTdlMW5uc3Y1czAxb2UxeDYybXE1MWouY3N2ICMjIyMNCiMgVmVyc2lvbiBkZSBCQkREOiAyMDIxLjA5LjI0IHYxDQojIFJVVEE6IGh0dHBzOi8vaWJtLmJveC5jb20vc2hhcmVkL3N0YXRpYy8NCg0KIyBjb2RlIHRvIGRvd25sb2FkIHRoZSBkYXRhc2V0DQpkb3dubG9hZC5maWxlKCJodHRwczovL2libS5ib3guY29tL3NoYXJlZC9zdGF0aWMvbjVheTVxYWRmZTdlMW5uc3Y1czAxb2UxeDYybXE1MWouY3N2IiwgZGVzdGZpbGU9Im1vdmllcy1kYi5jc3YiKQ0KDQptb3ZpZXNfZGF0YSA8LSByZWFkLmNzdigibW92aWVzLWRiLmNzdiIsIGhlYWRlcj1UUlVFLCBzZXA9IiwiKQ0KbW92aWVzX2RhdGENCmBgYA0KUkVWSVNJT04gUkFQSURBIERFTCBEQVRBRlJBTUU6DQpgYGB7cn0NCiNWaWV3KG1vdmllc19kYXRhKQ0Kc3VtbWFyeShtb3ZpZXNfZGF0YSkgIyBTdW1tYXJ5IEVzdGFkw61zdGljby4NCmhlYWQobW92aWVzX2RhdGEpICMgUHJpbWVyb3MgNi4NCm5hbWVzKG1vdmllc19kYXRhKSAjIE5hbWVzIGRlIGNvbHVtbmFzLg0KcHJpbnQoaXMuZGF0YS5mcmFtZShtb3ZpZXNfZGF0YSkpDQojYXR0YWNoKG1vdmllc19kYXRhKSAjb25seSBpZiB0aGVyZSBpcyBvbmx5IDEgZGF0YXNldCANCiMgQ09OVEVOSURPIERFIFRBQkxBOg0KIyBtb3ZpZXNfZGF0YSBlcyBsYSB0YWJsYSBjb24gZGF0b3MgZGUgcGVsw61jdWxhcy4NCmBgYA0KDQoNCkEgcGFydGlyIGRlIGFxdcOtIGluaWNpYSBlbCBDdWVycG8gZGVsIFNjcmlwdDoNCmBgYHtyIENVRVJQT30NCm15X2RhdGEgPC0gbW92aWVzX2RhdGENCmFraXJhIDwtIG15X2RhdGFbbXlfZGF0YSRuYW1lID09ICJBa2lyYSIsICJhdmVyYWdlX3JhdGluZyJdDQpha2lyYQ0KYGBgDQoNCg0KQ3JlbyBsYSBGdW5jdGlvbiBpc0dvb2RSYXRpbmc6DQpgYGB7ciBGVU5DVElPTiAxfQ0KaXNHb29kUmF0aW5nIDwtIGZ1bmN0aW9uKHJhdGluZywgdGhyZXNob2xkID0gNyl7DQogICAgaWYocmF0aW5nIDwgdGhyZXNob2xkKXsNCiAgICAgICAgcmV0dXJuKCJOTyIpICMgcmV0dXJuIE5PIGlmIHRoZSBtb3ZpZSByYXRpbmcgaXMgbGVzcyB0aGFuIHRoZSB0aHJlc2hvbGQNCiAgICB9ZWxzZXsNCiAgICAgICAgcmV0dXJuKCJZRVMiKSAjIG90aGVyd2lzZSByZXR1cm4gWUVTDQogICAgfQ0KfQ0KYGBgDQoNCg0KTGxhbW8gYSBtaSBmdW5jdGlvbjoNCmBgYHtyfQ0KaXNHb29kUmF0aW5nKGFraXJhKQ0KYGBgDQpgYGB7cn0NCmlzR29vZFJhdGluZyg4LCB0aHJlc2hvbGQgPSA4LjUpDQpgYGANCg0KDQpDUkVBQ0lPTiBERSBMQSBGVU5DSU9OIDI6DQpOb3csIGxldCdzIHB1dCB0aGlzIGFsbCB0b2dldGhlciBpbnRvIGEgZnVuY3Rpb24sIHRoYXQgY2FuIHRha2UgYW55IG1vdmllbmFtZSBhbmQgcmV0dXJuIGEgWUVTIG9yIE5PIGZvciB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgd2F0Y2ggaXQuDQpgYGB7ciBGVU5DSU9OIDJ9DQp3YXRjaE1vdmllIDwtIGZ1bmN0aW9uKGRhdGEsIG1vdmllbmFtZSl7DQogICAgcmF0aW5nIDwtIGRhdGFbZGF0YVsibmFtZSJdID09IG1vdmllbmFtZSwiYXZlcmFnZV9yYXRpbmciXQ0KICAgIHJldHVybihpc0dvb2RSYXRpbmcocmF0aW5nKSkNCn0NCg0KDQpgYGANCg0KDQpMTEFNQURBIEEgTEEgRlVOQ0lPTiAyOg0KYGBge3J9DQp3YXRjaE1vdmllKG15X2RhdGEsICJBa2lyYSIpDQpgYGANCg0KDQpNYWtlIHN1cmUgeW91IHRha2UgdGhlIHRpbWUgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gYWJvdmUuIE5vdGljZSBob3cgdGhlIGZ1bmN0aW9uIGV4cGVjdHMgdHdvIGlucHV0czogZGF0YSBhbmQgbW92aWVuYW1lLCBhbmQgc28gd2hlbiB3ZSB1c2UgdGhlIGZ1bmN0aW9uLCB3ZSBtdXN0IGFsc28gaW5wdXQgdHdvIGFyZ3VtZW50cy4NCg0KX0J1dCB3aGF0IGlmIHdlIG9ubHkgd2FudCB0byB3YXRjaCByZWFsbHkgZ29vZCBtb3ZpZXM/IEhvdyBkbyB3ZSBzZXQgb3VyIHJhdGluZyB0aHJlc2hvbGQgdGhhdCB3ZSBjcmVhdGVkIGVhcmxpZXI/IF8NCkhlcmUncyBob3c6DQoNClJFREVGSU5PIExBIEZVTkNJT04gd2F0Y2hNb3ZpZToNCmBgYHtyfQ0Kd2F0Y2hNb3ZpZSA8LSBmdW5jdGlvbihkYXRhLCBtb3ZpZW5hbWUsIG15X3RocmVzaG9sZCl7DQogICAgcmF0aW5nIDwtIGRhdGFbZGF0YSRuYW1lID09IG1vdmllbmFtZSwiYXZlcmFnZV9yYXRpbmciXQ0KICAgIHJldHVybihpc0dvb2RSYXRpbmcocmF0aW5nLCB0aHJlc2hvbGQgPSBteV90aHJlc2hvbGQpKQ0KfQ0KYGBgDQoNCg0KTm93IG91ciB3YXRjaE1vdmllIHRha2VzIHRocmVlIGlucHV0czogZGF0YSwgbW92aWVuYW1lIGFuZCBteV90aHJlc2hvbGQ6DQpgYGB7cn0NCndhdGNoTW92aWUobXlfZGF0YSwgIkFraXJhIiwgNykNCmBgYA0KDQoNCldoYXQgaWYgd2Ugd2FudCB0byBzdGlsbCBzZXQgb3VyIGRlZmF1bHQgdGhyZXNob2xkIHRvIGJlIDc/DQpIZXJlJ3MgaG93IHdlIGNhbiBkbyBpdDoNCg0KREVGSU5PIExBIEZVTkNJT04gd2F0Y2hNT3ZpZSBwb3IgM3JhIHZlejoNCmBgYHtyfQ0Kd2F0Y2hNb3ZpZSA8LSBmdW5jdGlvbihkYXRhLCBtb3ZpZW5hbWUsIG15X3RocmVzaG9sZCA9IDcpew0KICAgIHJhdGluZyA8LSBkYXRhW2RhdGFbLDFdID09IG1vdmllbmFtZSwiYXZlcmFnZV9yYXRpbmciXQ0KICAgIHJldHVybihpc0dvb2RSYXRpbmcocmF0aW5nLCB0aHJlc2hvbGQgPSBteV90aHJlc2hvbGQpKQ0KfQ0KDQoNCmBgYA0KDQoNCkxMQU1PIEEgTEEgRlVOQ0lPTiAyIChWRVJTSU9OIDMpOg0KYGBge3J9DQp3YXRjaE1vdmllKG15X2RhdGEsIkFraXJhIikNCmBgYA0KDQo=