1 Función Area
El triángulo rectángulo tiene un ángulo recto (90º), por lo que su altura coincide con uno de sus lados. El área de un triángulo rectángulo es la mitad del producto de los dos lados que forman el ángulo recto (catetos a y b).
Cree una función que calcule el área de un triángulo rectángulo.
CalculoArea <- function(Base,Altura){
calculo<- (Base)*(Altura)/2
return(calculo)
}
CalculoArea(3,4)## [1] 6
2 Función Convertidor °F a °C
Fahrenheit es una escala de temperatura termodinámica, donde el punto de congelación del agua es a 32 grados Fahrenheit (°F) y el punto de ebullición a 212 ° F ( a una presión atmosférica normal). Esto sitúa los puntos de ebullición y congelación del agua exactamente a 180 grados de diferencia. Por lo tanto, un grado en la escala Fahrenheit es 1/180 del intervalo entre el punto de congelación y el punto de ebullición del agua. El cero absoluto se define como -459,67 °F.
Una diferencia de temperatura de 1 °F es el equivalente de una diferencia de temperatura de 0,556 °C.
Cree una función que permita convertir de grados centígrados a Fahrenheit.
fahr_to_celsius <- function(temp) {
celsius <- ((temp) * (9 / 5)) + 32
return(celsius)
}
fahr_to_celsius(1)## [1] 33.8
3 Funcion Convertidores Otros
Gramos a libras
El gramo (g) se define como la milésima parte del kilogramo, la unidad básica de masa del Sistema Internacional de Unidades.
La libra (lb) es una unidad de masa usada desde la Antigua Roma y la que hoy en día se utiliza en los países anglosajones (pound). Un gramo equivale a 0,00220462262 libras.
Metros a millas
Metro es la unidad básica de la distancia. La ortografía internacionalmente aceptada de la unidad en Inglés es el Metre, y la ortografía Inglés Americano es el Meter.
Milla es una unidad no-métricas de longitud. En 1592, el Parlamento define la milla terrestre en 8 furlongs o 1609.344 metros.
Grados Centígrados a Fahrenheit
Ver punto 2
Cree una función que permita al usuario:
• Convertir de gramos a libras, de metros a millas y de grados centigrados a Fahrenheit.
• Introducir el valor a convertir.
• Devuelva el valor en función de lo escogido por el usuario.
Calcular <- function(Medida, Valor) {
if (Medida == "Gramos") {
Resultado<- (Valor) / (453.592)
} else if (Medida == "Metros") {
Resultado<- (Valor) / (1609.344)
} else if (Medida == "Centigrados") {
Resultado <- ((Valor) * (9/5)) + 32
} else {print(Resultado)
}
return(Resultado)}
Calcular("Centigrados",20)## [1] 68
4 Funcion de paquetes
Cree una función que tenga como argumento un vector de paquetes y que verifique si los paquetes se encuentren instalados. Si no se encuentran instalados, la función debe de encargarse de instalarlos y posteriormente debe cargar todos los paquetes del vector.
packinstall <- function(packs){
new.packs <- packs[!(packs %in% installed.packages())]
## compara los nombres en PACKS contra los paquetes instalados, para discriminar los que faltan
if(length(new.packs)) install.packages(new.packs)
## Instale lo que este en NEW.PACKS
lpacks <- lapply(packs, require, character.only=T)
## Evalua cada objeto de la lista PACKS con la funcion REQUIRE
names(lpacks) <- (packs)
## Cambiamos los nombres de la lista para visualizar mejor los paquetes instalados
lpacks
}
packs <- c('knitr','devtools','dplyr','readr','tibble','tidyr','purrr')
## Guarda los paquetes necesarios en el objeto PACKS para ejecutar la funcion
packinstall(packs)## Loading required package: knitr
## Loading required package: devtools
## Loading required package: 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
## Loading required package: readr
## Loading required package: tibble
## Loading required package: tidyr
## Loading required package: purrr
## $knitr
## [1] TRUE
##
## $devtools
## [1] TRUE
##
## $dplyr
## [1] TRUE
##
## $readr
## [1] TRUE
##
## $tibble
## [1] TRUE
##
## $tidyr
## [1] TRUE
##
## $purrr
## [1] TRUE
5 BigMac
Investigue sobre el índice BigMac y genere lo siguiente:
• Descargue la información del índice de Big Mac del siguiente link:https://raw.githubusercontent.com/TheEconomist/big-mac-data/master/output-data/big-mac-full-index.csv
• A continuación diseñe una función que reciba como argumentos el objeto del dataset creado desde el punto anterior.
• El segundo argumento debe ser un vector con el nombre de dos países a comparar, deseados por el usuario.
vpaises <- data.frame(Nombre=indice_mac$name,Fecha=indice_mac$date,Precio_Local=indice_mac$local_price,Ex=indice_mac$dollar_ex,Dollar=indice_mac$dollar_price,stringsAsFactors = F) ##cargamos en un df los valores que nos interesa trabajar
paisfun <- function(pais1,pais2){
nombre1 <- vpaises %>%
filter(Nombre == pais1) ## guarda en objeto nombre1 un df con los valores pertenecientes a pais1
nombre2 <- vpaises %>%
filter(Nombre == pais2) ## guarda en objeto nombre1 un df con los valores pertenecientes a pais2
comp <- bind_cols(nombre1,nombre2)
}
Result <- paisfun("Japan","Mexico")
print(select(Result, Nombre,Dollar,Nombre1,Dollar1,Fecha))## Nombre Dollar Nombre1 Dollar1 Fecha
## 1 Japan 2.77 Mexico 2.22 2000-04-01
## 2 Japan 2.37 Mexico 2.36 2001-04-01
## 3 Japan 2.02 Mexico 2.36 2002-04-01
## 4 Japan 2.18 Mexico 2.18 2003-04-01
## 5 Japan 2.32 Mexico 2.07 2004-05-01
## 6 Japan 2.34 Mexico 2.58 2005-06-01
## 7 Japan 2.19 Mexico 2.66 2006-01-01
## 8 Japan 2.23 Mexico 2.57 2006-05-01
## 9 Japan 2.30 Mexico 2.66 2007-01-01
## 10 Japan 2.29 Mexico 2.69 2007-06-01
## 11 Japan 2.62 Mexico 3.15 2008-06-01
## 12 Japan 3.46 Mexico 2.39 2009-07-01
## 13 Japan 3.50 Mexico 2.50 2010-01-01
## 14 Japan 3.67 Mexico 2.50 2010-07-01
## 15 Japan 4.08 Mexico 2.74 2011-07-01
## 16 Japan 4.16 Mexico 2.70 2012-01-01
## 17 Japan 4.09 Mexico 2.70 2012-07-01
## 18 Japan 3.51 Mexico 2.90 2013-01-01
## 19 Japan 3.20 Mexico 2.86 2013-07-01
## 20 Japan 2.97 Mexico 2.78 2014-01-01
## 21 Japan 3.64 Mexico 3.25 2014-07-01
## 22 Japan 3.14 Mexico 3.35 2015-01-01
## 23 Japan 2.99 Mexico 3.11 2015-07-01
## 24 Japan 3.12 Mexico 2.81 2016-01-01
## 25 Japan 3.47 Mexico 2.37 2016-07-01
## 26 Japan 3.26 Mexico 2.23 2017-01-01
## 27 Japan 3.36 Mexico 2.75 2017-07-01
## 28 Japan 3.43 Mexico 2.57 2018-01-01
## 29 Japan 3.51 Mexico 2.57 2018-07-01
## 30 Japan 3.60 Mexico 2.54 2019-01-01
• Brinde como resultado un mensaje de texto que indique la comparación del valor del índice de Big Mac para los dos países. Por ejemplo: “El índice de Big Mac para Costa Rica es de 5$ dólares y para Nicaragua es de 2$ dolares.”
valor1 <- Result %>%
filter(Result$Fecha=="2019-01-01") %>%
select(Nombre,Dollar) ## Guardamos el valor del dolar a la ultima fecha para pais1 en valor1
valor2 <- Result %>%
filter(Result$Fecha=="2019-01-01") %>%
select(Nombre1,Dollar1) ## Guardamos el valor del dolar a la ultima fecha para pais2 en valor2
paste0("El índice de Big Mac para ", valor1$Nombre ," es de $", valor1$Dollar , " dólares y para ", valor2$Nombre1 ," es de $", valor2$Dollar1," dolares.")## [1] "El índice de Big Mac para Japan es de $3.6 dólares y para Mexico es de $2.54 dolares."
6 Funcion
Para la siguiente función:
split_data <- function(df, train = TRUE,percentage){
length<- nrow(df)
total_row <- length percentage*
split <- 1:total_row
if (train =TRUE){
train_df <- dataframe[split, ]
return(train_df)
} else {
test_df <- df[-split, ]
return(test_df)
}
}
• Indique linea por línea y de manera general cuál es la funcionalidad y propósito de la misma.
• Corrija el(los) error(es) que contiene la función.
• Compile la función corregida y pruebe con un dataset de su escogencia.
split_data <- function(df, train = TRUE,percentage){
- Se guarda en un objeto (split_data) la funcion
- df: Define el dataset
- train: especifica si la funcion devuelve el train set o el test set.
- percentage ahi nos va a guardar el porcentage del dataset que queremos dividir para train/test.
- El train set permite al algoritmo aprender de la data. Si quisieramos solo probar la ejecución de
nuestro modelo, podemos usar el test set para que devuelva la medida de la ejecución.
length <- nrow(df)
-Guardamos en el objeto (length) la cantidad de lineas del dataframe
total_row <- length*percentage
-Multiplicamos el total de lineas por el valor en percentage (0.8 por ejemplo). Nos va a devolver el numero de lineas que debemos seleccionar para el train set. Normalmente se divide el 80% de las lineas para train, y 20% para test.
split <- 1:total_row
- aca seleccionamos desde la linea 1 hasta la linea total_row
if (train =TRUE){
- Si la condición es true, regresa el train set, sino el test set
train_df <- dataframe df[split, ]
- Se corrige el nombre de la funcion dataframe por df declarada en el inicio, y la guarda en un objeto
return(train_df)
- Devuelve el resultado de la funcion
} else {
test_df <- df[-split, ]
- Guarda el resto de los datos en un objeto para ser usados por el test set
return(test_df)
- Devuelve el resultado para la funcion test
}
}
- Fin de la funcion
split_data <- function(df, train = TRUE,percentage){
length <- nrow(df)
total_row <- length*percentage
split <- 1:total_row
if (train == TRUE){
train_df <- df[split, ]
return(train_df)
} else {
test_df <- df[-split, ]
return(test_df)
}
}
data_train <- split_data(vpaises,0.8,train = TRUE) ## Ejecuta la funcion sobre df vpaises para el set train
data_test <- split_data(vpaises,0.8,train = FALSE) ## Ejecuta la funcion sobre df vpaises para el set test
dim(data_train) ## [1] 974 5
## [1] 244 5