# install.packages("tidyverse")
library(tidyverse)
x <- 3
y <- 2
x
## [1] 3
y
## [1] 2
suma <- x + y
suma
## [1] 5
resta <- x - y
resta
## [1] 1
multiplicacion <- x * y
multiplicacion
## [1] 6
division <- x / y
division
## [1] 1.5
division_entera <- x %/% y
division_entera
## [1] 1
residuo <- x %% y
residuo
## [1] 1
potencia <- x ** y
potencia
## [1] 9
raizcubica <- x ** (1/3)
raizcubica
## [1] 1.44225
raizcuadrada <- sqrt(x)
raizcuadrada
## [1] 1.732051
# ?sqrt (signo ? es para ayuda)
exponencial <- exp(1)
exponencial
## [1] 2.718282
valorabsoluto <- abs(x)
valorabsoluto
## [1] 3
signo <- sign(x)
signo
## [1] 1
redondeoarriba <- ceiling(x/y)
redondeoarriba
## [1] 2
redondeoabajo <- floor(x/y)
redondeoabajo
## [1] 1
truncar <- trunc(x/y)
truncar
## [1] 1
pi
## [1] 3.141593
radio <- 5
areacirculo <- pi*radio**2
areacirculo
## [1] 78.53982
a <- c(1,2,3,4,5)
a
## [1] 1 2 3 4 5
a <- c(1:5) #secuencia de enteros
a
## [1] 1 2 3 4 5
b <- seq(1,10, by = 0.5)
b
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
## [16] 8.5 9.0 9.5 10.0
nombres <- c("juan", "ana", "pedro")
nombres
## [1] "juan" "ana" "pedro"
calif <- c(100,90,50)
calif
## [1] 100 90 50
longitud <- length(a)
longitud
## [1] 5
promedio <- mean(calif)
promedio
## [1] 80
ordenascendente <- sort(calif)
ordenascendente
## [1] 50 90 100
ordendescendente <- sort(calif, decreasing = TRUE)
ordendescendente
## [1] 100 90 50
tablacalif <- data.frame (nombres,calif)
tablacalif$estatus <- ifelse(tablacalif$calif >=70, "aprobado", "reprobado")
# condicionales: igual ==, desigual !=, mayor que>, menor que <, >=, <=
summary(tablacalif)
## nombres calif estatus
## Length:3 Min. : 50 Length:3
## Class :character 1st Qu.: 70 Class :character
## Mode :character Median : 90 Mode :character
## Mean : 80
## 3rd Qu.: 95
## Max. :100
str(tablacalif)
## 'data.frame': 3 obs. of 3 variables:
## $ nombres: chr "juan" "ana" "pedro"
## $ calif : num 100 90 50
## $ estatus: chr "aprobado" "aprobado" "reprobado"
head(tablacalif) # solo se ven los primeros 6 rengoles
## nombres calif estatus
## 1 juan 100 aprobado
## 2 ana 90 aprobado
## 3 pedro 50 reprobado
tail(tablacalif) # solo se ven los ultimos 6 rengoles
## nombres calif estatus
## 1 juan 100 aprobado
## 2 ana 90 aprobado
## 3 pedro 50 reprobado
# SELECT para seleccionar columnas
resultados <- select(tablacalif, -c(nombres))
resultados
## calif estatus
## 1 100 aprobado
## 2 90 aprobado
## 3 50 reprobado
# filter filtrar rengoles
resultados <- filter(resultados, estatus == "aprobado")
alumno <- c("Natalia", "Paulina")
peso <- c(64, 53)
altura <- c(1.68, 1.55)
tablaIMC <- data.frame (alumno, peso, altura)
tablaIMC$IMC <- tablaIMC$peso/altura**2
tablaIMC$resultado <- ifelse(tablaIMC$IMC < 18.5, "Bajo Peso", ifelse (tablaIMC$IMC <= 24.9, "Peso Normal", ifelse (tablaIMC$IMC <= 29.9, "Sobre peso", "Obesidad")))
semana <- c(1:10)
ventas <- c(150,160,165,180,175,190,200,195,210,220)
plot(semana, ventas, type = "b", main="ventas semanales (K USD)")
datosventas <- data.frame(semana, ventas)
regresion <- lm(ventas ~ semana, data=datosventas)
summary(regresion)
##
## Call:
## lm(formula = ventas ~ semana, data = datosventas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.758 -1.538 0.500 2.439 6.455
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 144.3333 3.1714 45.51 6.00e-11 ***
## semana 7.3030 0.5111 14.29 5.61e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.643 on 8 degrees of freedom
## Multiple R-squared: 0.9623, Adjusted R-squared: 0.9576
## F-statistic: 204.2 on 1 and 8 DF, p-value: 5.614e-07
datosnuevos <- data.frame(semana = 11:20)
prediccion <- predict (regresion, datosnuevos)
prediccion
## 1 2 3 4 5 6 7 8
## 224.6667 231.9697 239.2727 246.5758 253.8788 261.1818 268.4848 275.7879
## 9 10
## 283.0909 290.3939
R es un lenguaje de programación útil para realizar cálculos, principalmente estadísticos, y forma parte de las herramientas del Big Data.
RStudio es el entorno donde se puede programar R, y gracias a que también aquí se puede programar Python, hace unos años se anunció que su nombre será * Postit*.
En esta introducción, lo que llama la atención es la constante aparición de alertas o errores en el programa, los cuales encontramos que principalmente se deben a que la versión no es la más reciente, a la falta de instalación de paquetes o llamar a las librerías, problemas de escritura (typos) y los muchos argumentos que tienen las funciones.
Si desde un inicio programamos de forma estructurada, disciplinada y metículosa, padremos preveer muchas de las alertas o errores y así obtendremos los muchos beneficios de la programación en R, como la prpedicción de pronósticos.