INTRODUCCION AL LENGUAJE R

R y su propio lenguaje

Comentario: RStudio es una aplicación de programación extremadamente poderosa y popular utilizada en el mundo de la ciencia de datos y la estadística. Esta plataforma está diseñada específicamente para trabajar con el lenguaje de programación R, que es ampliamente utilizada en análisis de datos, estadísticas y visualización de datos.

# R no entiende idiomas; cualquier idioma lo expresa como un error
# Guardando Objetos-

mango<-15
mango<-23

# R asigna valores numericos a cualquier palabra que deseemos 
mango<- 
  1000

# R realiza sumas entre numeros y palabras; las cuales tiene asignado un valor numerico
15 + 2
## [1] 17
# R puede sumar una una palabra (asignado un valor numerico) con un valor numerico
mango + 2
## [1] 1002

R como una calculadora

# R realiza operaciones matematicas
2 + 2 # Sumas
## [1] 4
3 - 1 # Restar
## [1] 2
4*5 # Multiplicar 
## [1] 20
12 / 3 # Dividir 
## [1] 4
7 ^ 2   # operaciones al cuadrado 
## [1] 49
0:25  # Realiza series  
##  [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
## [26] 25

R interpreta igualdades y diferencias

3 == 5  # es igual?
## [1] FALSE
5 != 0  # es distino?
## [1] TRUE
2 > 9   # Mayor que
## [1] FALSE
1 < 8   # Menor que
## [1] TRUE
5 >= 5  # Mayor o igual que
## [1] TRUE
4 <= 1  # Meno o igual que
## [1] FALSE
mango < -1
## [1] FALSE

R asigna valores a palabras, que despues los podemos llamar, para esto debemos utilizar “”

mi_segundo_objeto <- 160

nome <-"usp"

nome_1 <- "usp" # comillas PARA TODOS LOS VALORES TEXTUALES 
# (CARACTERES)

nome_1
## [1] "usp"
nome_2 <- 'usp'

nome_2
## [1] "usp"
nome_1 == nome_2
## [1] TRUE
nome_1 != nome_2
## [1] FALSE
verdadero <- nome_1 == nome_2

Como se clasifican las cosas segun R

# Este es un Objeto logico

verdadero
## [1] TRUE
falso <- nome_1 != nome_2

falso
## [1] FALSE
# Otros valores importantes:

# Valor logico: valor verdadero

TRUE #logical
## [1] TRUE
T #logical
## [1] TRUE
FALSE #logical
## [1] FALSE
F #logical
## [1] FALSE
NA #logical ES DISTINO DE CERO!!!!!!
## [1] NA
# Ademas R anula valores que no deseemos

NULL #NULL
## NULL
Inf #numeric
## [1] Inf
-Inf #numeric
## [1] -Inf

Algunas funciones en R

# Funcion  concatenate: c()
#Para crear vectores es necesario utilizar la funcion de concatenar c()
vetor <- 
  c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

vector
## function (mode = "logical", length = 0L) 
## .Internal(vector(mode, length))
## <bytecode: 0x000001c85a5eb518>
## <environment: namespace:base>
# valores textuales
# Para saber si esta bien el trabajo primero debo guardar el vector, luego debo llamarlo

nomes <- c("mariana", "pedro", "daniela")

nomes
## [1] "mariana" "pedro"   "daniela"

Redondear

# Todas las funciones las podemos adactar de acuerdo a las nececidades de trabajo que deseeemos 
round(
  x = 3.141592)
## [1] 3
round(x = 3.141592, digits = 2)
## [1] 3.14
# argumentos ?
# ?; Nos abre un manual de ayuda en el trabajo, para saber como se puede interpretar un comando


# o as?:
args(round)
## function (x, digits = 0) 
## NULL
round
## function (x, digits = 0)  .Primitive("round")
# R asigna caracteres a palabras o puede asignar caracteres a valores numericos para poder dar una mejor interpretacion

nomes_e_idades <- c("mariana", 22, "pedro", 30, "daniela", 45)

nomes_e_idades
## [1] "mariana" "22"      "pedro"   "30"      "daniela" "45"
# R me realiza una descripcion de como es mi caracter, sea tipo numerico o logico

# De nuevo:
class(nomes_e_idades)
## [1] "character"

Jerarquia de R

# Jerarquia: textuales > valores numericos > valores logicos.
# R realiza una comparacion de todos los valores que tengamos y los clasifica segun la herarquia
teste <- c("laranja", 230, FALSE)


class(teste)
## [1] "character"
outro_teste <- c(12, 37, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE)

outro_teste
## [1] 12 37  0  1  0  1  1  1  1
class(outro_teste)
## [1] "numeric"
missings <- c(12, 37, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, NA)

missings
##  [1] 12 37  0  1  0  1  1  1  1 NA
class(missings)
## [1] "numeric"
# R identifica que tipo de es, caracter, numerici, logico

Variables segun la clasificcion de R

# Variables categoricas ---------------------------------------------------

tipo_sanguineo <- c(
  "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")
# R transforma valores de caracter en factor; es decir tiene niveles
tipo_sanguineo
## [1] "A+"  "A-"  "B+"  "B-"  "AB+" "AB-" "O+"  "O-"
class(tipo_sanguineo)
## [1] "character"
# Transformación:

tipo_sanguineo <- factor(tipo_sanguineo)

tipo_sanguineo
## [1] A+  A-  B+  B-  AB+ AB- O+  O- 
## Levels: A- A+ AB- AB+ B- B+ O- O+
class(tipo_sanguineo)
## [1] "factor"
# Para a utilizacion de dos valores declarados em técnicas direcionadas a 
# variábles nominales, este procedimento basta que está completo.

# Para el caso de variables ordinales,  deve ser estendido. Vamos a crear un  objeto con nuevas categorias:

nivel_escolarizacao <- c("fundamental", "medio", "pregrado")

nivel_escolarizacao
## [1] "fundamental" "medio"       "pregrado"
class(nivel_escolarizacao)
## [1] "character"
# Funcion factor():

nivel_escolarizacao <- factor(nivel_escolarizacao)

class(nivel_escolarizacao)
## [1] "factor"
nivel_escolarizacao
## [1] fundamental medio       pregrado   
## Levels: fundamental medio pregrado
# Niveles, factor():

nivel_escolarizacao <- factor(nivel_escolarizacao,
                              levels = c("medio",
                                         "fundamental","pregrado"))

Base de datos segun R

#  Bases de datos ------------------------------

empresas <- c("Empresa A", NA, "Empresa C", "Empresa D", "Empresa E")
funcionarios <- c(100, 5000, 230, 12000, 1700)
presenca_bolsa <- c(F,T,NA,T,TRUE)
sede_brasil <- c(NA,0,1,0,0)
diretor_executivo <- c(NA,"daniel","carlos","carla","solange")

#iguales

length(empresas)
## [1] 5
length(funcionarios)
## [1] 5
length(presenca_bolsa)
## [1] 5
length(sede_brasil)
## [1] 5
length(diretor_executivo)
## [1] 5
# para sacar una tabla utilizo Data.frame.
dados <- data.frame(empresas, funcionarios, presenca_bolsa, 
                    sede_brasil, diretor_executivo)

#datos
# comando para oberservar las tablas que creeemos con data frame
View(dados)

#con nombres

dados <- data.frame(jose = empresas, 
                    employees = funcionarios, 
                    stock_exchange = presenca_bolsa, 
                    brazil_hq = sede_brasil, 
                    ceo = diretor_executivo)


View(dados)

R interpretando bases de datos

# Bases de datos en R ---------------------------
#visualizar datos o paquetes para realizar programas
help(package = "datasets")

data("Orange")


head(x =Orange)
##   Tree  age circumference
## 1    1  118            30
## 2    1  484            58
## 3    1  664            87
## 4    1 1004           115
## 5    1 1231           120
## 6    1 1372           142
# Observar base de datos grandes
tail(x = Orange)
##    Tree  age circumference
## 30    5  484            49
## 31    5  664            81
## 32    5 1004           125
## 33    5 1231           142
## 34    5 1372           174
## 35    5 1582           177
head(Orange, n = 1)
##   Tree age circumference
## 1    1 118            30
tail(Orange, n = 7)
##    Tree  age circumference
## 29    5  118            30
## 30    5  484            49
## 31    5  664            81
## 32    5 1004           125
## 33    5 1231           142
## 34    5 1372           174
## 35    5 1582           177
# estructura, str():

str(Orange)
## Classes 'nfnGroupedData', 'nfGroupedData', 'groupedData' and 'data.frame':   35 obs. of  3 variables:
##  $ Tree         : Ord.factor w/ 5 levels "3"<"1"<"5"<"2"<..: 2 2 2 2 2 2 2 4 4 4 ...
##  $ age          : num  118 484 664 1004 1231 ...
##  $ circumference: num  30 58 87 115 120 142 145 33 69 111 ...
##  - attr(*, "formula")=Class 'formula'  language circumference ~ age | Tree
##   .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv> 
##  - attr(*, "labels")=List of 2
##   ..$ x: chr "Time since December 31, 1968"
##   ..$ y: chr "Trunk circumference"
##  - attr(*, "units")=List of 2
##   ..$ x: chr "(days)"
##   ..$ y: chr "(mm)"
# Vamos a observar la estructura de las variables, ademas observamos un ejemplo detallado

# numero de lineas
nrow(Orange)
## [1] 35
# para obserbar el numero de colunmas
ncol(Orange)
## [1] 3
dim(Orange)
## [1] 35  3
# para obserbar los nombres
names(Orange)
## [1] "Tree"          "age"           "circumference"
rm(Orange)

# cargando nuevamente
data("Orange")