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. You can embed an R code chunk like this:
summary(Big.Mac)
## Fecha Pais Precio
## Length:56 Length:56 Min. :1.652
## Class :character Class :character 1st Qu.:2.554
## Mode :character Mode :character Median :3.238
## Mean :3.436
## 3rd Qu.:4.103
## Max. :6.622
You can also embed plots, for example:
plot(Big.Mac$Precio)
Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.
1. Cree una función que calcule el área de un triángulo rectángulo
Primer ejemplo
areaT <- function(base,altura){
##Cuerpo de la función
calculo<- (base*altura)/2
calculop <- paste0("El área del triángulo es de ", calculo)
return(calculop)}
###Resultado
Area1 <-areaT(20,10)
Area1
## [1] "El área del triángulo es de 100"
Segundo ejemplo
areaT <- function(base,altura){
##Cuerpo de la función
calculo<- (base*altura)/2
calculop <- paste0("El área del triángulo es de ", calculo)
return(calculop)}
###Resultado
Area2 <-areaT(35,15)
Area2
## [1] "El área del triángulo es de 262.5"
Tercer ejemplo
areaT <- function(base,altura){
##Cuerpo de la función
calculo<- (base*altura)/2
calculop <- paste0("El área del triángulo es de ", calculo)
return(calculop)}
###Resultado
Area3 <-areaT(10,5)
Area3
## [1] "El área del triángulo es de 25"
2. Cree una función que permita convertir de grados centígrados a Fahrenheit.
Primer ejemplo
Conversion_fahrenheit <- function(celsius){
## Cuerpo de la función
calculo<-9.0/5.0 * celsius + 32
calculop <- paste0("La conversión es de ", calculo, " grados fahrenheit")
return(calculop)
}
###Resultado de la función con 25 grados celsius
fahrenheit1 <-Conversion_fahrenheit(25)
fahrenheit1
## [1] "La conversión es de 77 grados fahrenheit"
Segundo ejemplo
Conversion_fahrenheit <- function(celsius){
## Cuerpo de la función
calculo<-9.0/5.0 * celsius + 32
calculop <- paste0("La conversión es de ", calculo, " grados fahrenheit")
return(calculop)
}
###Resultado de la función con 18 grados celsius
fahrenheit2 <-Conversion_fahrenheit(18)
fahrenheit2
## [1] "La conversión es de 64.4 grados fahrenheit"
Tercer ejemplo
Conversion_fahrenheit <- function(celsius){
## Cuerpo de la función
calculo<-9.0/5.0 * celsius + 32
calculop <- paste0("La conversión es de ", calculo, " grados fahrenheit")
return(calculop)
}
###Resultado de la función con 33 grados celsius
fahrenheit3 <-Conversion_fahrenheit(33)
fahrenheit3
## [1] "La conversión es de 91.4 grados fahrenheit"
3. 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.
Primer ejemplo
Conversion_varios <- function(seleccion,cantidad){
if(seleccion=="celsius"){
# fahrenheit
fahrenheit_calculo<-9.0/5.0 * cantidad +32
calculo_fahrenheit <- paste0("La conversión es de ", fahrenheit_calculo, " grados Fahrenheit")
return( calculo_fahrenheit)}
else if(seleccion=="millas"){
# metros a millas
millas_calculo<-cantidad/1609.34
calculo_millas <- paste0("La conversión es de ", millas_calculo, "millas")
return(calculo_millas)}
else if(seleccion=="libras"){
# gramos a libras
libras_calculo<-(cantidad/453.592)
calculo_libras <- paste0("La conversión es de ", libras_calculo, "libras")
return(calculo_libras)}
else{print("Error")}
}
Resultado1<-Conversion_varios("celsius",50)
Resultado1
## [1] "La conversión es de 122 grados Fahrenheit"
Segundo ejemplo
Conversion_varios <- function(seleccion,cantidad){
if(seleccion=="celsius"){
# fahrenheit
fahrenheit_calculo<-9.0/5.0 * cantidad +32
calculo_fahrenheit <- paste0("La conversión es de ", fahrenheit_calculo, " grados Fahrenheit")
return( calculo_fahrenheit)}
else if(seleccion=="millas"){
# metros a millas
millas_calculo<-cantidad/1609.34
calculo_millas <- paste0("La conversión es de ", millas_calculo, " millas")
return(calculo_millas)}
else if(seleccion=="libras"){
# gramos a libras
libras_calculo<-(cantidad/453.592)
calculo_libras <- paste0("La conversión es de ", libras_calculo, "libras")
return(calculo_libras)}
else{print("Error")}
}
Resultado2<-Conversion_varios("millas",2500)
Resultado2
## [1] "La conversión es de 1.55343184162452 millas"
Tercer ejemplo
Conversion_varios <- function(seleccion,cantidad){
if(seleccion=="celsius"){
# fahrenheit
fahrenheit_calculo<-9.0/5.0 * cantidad +32
calculo_fahrenheit <- paste0("La conversión es de ", fahrenheit_calculo, " grados Fahrenheit")
return( calculo_fahrenheit)}
else if(seleccion=="millas"){
# metros a millas
millas_calculo<-cantidad/1609.34
calculo_millas <- paste0("La conversión es de ", millas_calculo, "millas")
return(calculo_millas)}
else if(seleccion=="libras"){
# gramos a libras
libras_calculo<-(cantidad/453.592)
calculo_libras <- paste0("La conversión es de ", libras_calculo, " libras")
return(calculo_libras)}
else{print("Error")}
}
Resultado3<-Conversion_varios("libras",85000)
Resultado3
## [1] "La conversión es de 187.393075715621 libras"
4. 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.
##Instalar y cargar de manera automatica
##Primero se crea un objeto con los paquetes que se desean instalar/cargar
paquetes<- c("readr","dplyr")
##Aplica un ciclo iterativo para comprobar el estado de cada paquete e instalar si corresponde
for (i in paquetes){
if (i %in% installed.packages()[,"Package"] == FALSE){
install.packages(i,repos="http://cran.rstudio.com/");
}
}
##Carga los paquetes sin generar mensajes o warnings
sapply(paquetes,library,character.only=TRUE,quietly=T)
## readr dplyr
## [1,] "readr" "readr"
## [2,] "dplyr" "dplyr"
## [3,] "stats" "stats"
## [4,] "graphics" "graphics"
## [5,] "grDevices" "grDevices"
## [6,] "utils" "utils"
## [7,] "datasets" "datasets"
## [8,] "methods" "methods"
## [9,] "base" "base"
5.Descargue la información del índice de Big Mac del siguiente link:.
library(dplyr)
wd <- "/cloud/project"
BigMac <- read.csv("big-mac-full-index.csv",header=T, sep=",", dec = ".", stringsAsFactors = F) %>%
arrange(name,desc(date)) %>%
top_n(1,wt = date)
Big.Mac = data.frame(Fecha=BigMac$date, Pais=BigMac$name, Precio=BigMac$dollar_price, stringsAsFactors = F)
Ejemplo 1:
A continuación diseñe una función que reciba como argumentos: -El objeto del dataset creado desde el punto anterior. -Un vector con el nombre de dos países a comparar
library(dplyr)
Par.Mac <- function(df,Vector){ #Creación de la función.
#Cuerpo de la función.
Pais1 <- Vector[1]
Pais2 <- Vector[2]
Pais1 <- df %>%
select(Pais) %>%
filter(Pais==Pais1) %>%
as.character()
Pais2 <- df %>%
select(Pais) %>%
filter(Pais==Pais2) %>%
as.character()
Precio1 <- df %>%
filter(Pais==Pais1) %>%
select(Precio) %>%
as.numeric()
Precio2 <- df %>%
filter(Pais==Pais2) %>%
select(Precio) %>%
as.numeric()
#Brinde como resultado un mensaje de texto que indique la comparación del valor del índice de Big Mac para los dos países.
Texto <- paste0("El índice de Big Mac para ", Pais1, " es de ", ... = round(Precio1,2) , " dólares y para ", Pais2, " es de ", round(Precio2,2) ," dólares.")
return(Texto)
}
Spread1 = c("United States", "China")
Par.Mac(Big.Mac,Spread1)
## [1] "El índice de Big Mac para United States es de 5.58 dólares y para China es de 3.05 dólares."
Ejemplo 2:
Par.Mac <- function(df,Vector){ #Creación de la función.
#Cuerpo de la función.
Pais1 <- Vector[1]
Pais2 <- Vector[2]
Pais1 <- df %>%
select(Pais) %>%
filter(Pais==Pais1) %>%
as.character()
Pais2 <- df %>%
select(Pais) %>%
filter(Pais==Pais2) %>%
as.character()
Precio1 <- df %>%
filter(Pais==Pais1) %>%
select(Precio) %>%
as.numeric()
Precio2 <- df %>%
filter(Pais==Pais2) %>%
select(Precio) %>%
as.numeric()
#Brinde como resultado un mensaje de texto que indique la comparación del valor del índice de Big Mac para los dos países.
Texto <- paste0("El índice de Big Mac para ", Pais1, " es de ", ... = round(Precio1,2) , " dólares y para ", Pais2, " es de ", round(Precio2,2) ," dólares.")
return(Texto)
}
Spread2 = c("Japan", "Mexico")
Par.Mac(Big.Mac,Spread2)
## [1] "El índice de Big Mac para Japan es de 3.6 dólares y para Mexico es de 2.54 dólares."
Ejemplo 3
Par.Mac <- function(df,Vector){ #Creación de la función.
#Cuerpo de la función.
Pais1 <- Vector[1]
Pais2 <- Vector[2]
Pais1 <- df %>%
select(Pais) %>%
filter(Pais==Pais1) %>%
as.character()
Pais2 <- df %>%
select(Pais) %>%
filter(Pais==Pais2) %>%
as.character()
Precio1 <- df %>%
filter(Pais==Pais1) %>%
select(Precio) %>%
as.numeric()
Precio2 <- df %>%
filter(Pais==Pais2) %>%
select(Precio) %>%
as.numeric()
#Brinde como resultado un mensaje de texto que indique la comparación del valor del índice de Big Mac para los dos países.
Texto <- paste0("El índice de Big Mac para ", Pais1, " es de ", ... = round(Precio1,2) , " dólares y para ", Pais2, " es de ", round(Precio2,2) ," dólares.")
return(Texto)
}
Spread3 = c("Britain", "Brazil")
Par.Mac(Big.Mac,Spread3)
## [1] "El índice de Big Mac para Britain es de 4.07 dólares y para Brazil es de 4.55 dólares."
6.Indique linea por línea y de manera general cuál es la funcionalidad y propósito de la misma.
split_data <- function(df, train = TRUE,percentage)
#Crea una funcion que elige un porcentaje de un dataframe cuando train es verdadero.
{length<- nrow(df)
#Se crea como objeto length igual al total de filas que contiene el dataframe.
total_row <- length *percentage
#Se saca una muestra del total de filas utilizando el porcentaje y creando un objeto con el nombre de total_row.
split <- 1:total_row
#Selecciona de la fila 1 hasta el número defido como muestra.
if (train =TRUE)
#Se evalua mediante la condición if else. Si la condicion es verdadera entonces:
{
train_df <- dataframe[split, ]
#Se crea un nuevo dataset con aplicando la muestra creada y se nombra train_df.
return(train_df)
#Devuelve el dataframe final }
else {
test_df <- df[-split, ]
#Si la condicion es falsa se crea un dataset eliminando la muestra seleccionada y lo nombra test_df.
return(test_df) #Devuelve el dataframe final
}
}
## Error: <text>:18:11: unexpected '='
## 17:
## 18: if (train =
## ^
Corrija el(los) error(es) que contiene la 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 <- df[split, ]
return(train_df)
} else {
test_df <- df[-split, ]
return(test_df)
}
}
Compile la función corregida y pruebe con un dataset de su escogencia.
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)
}
}
Samply1 <- split_data(BigMac,train = TRUE,0.25)
Samply2 <- split_data(BigMac,train = TRUE,0.4)
Samply3 <- split_data(BigMac,train = TRUE,0.55)