Vicente Mallama
2023-09-30
R es un lenguaje de programación centrado en el análisis de datos y la estadística, con su propio lenguaje y sintaxis. Aunque poderoso, su singularidad puede resultar un poco compleja. Ofrece herramientas especializadas y una gran comunidad de usuarios, convirtiéndolo en una opción destacada para el análisis de datos.
En R, puedes crear objetos para almacenar y manipular datos. A continuación, se muestra cómo crear un objeto llamado “manzana” y asignarle el valor 15.
manzana <- 15
En R también es posible crear y manipular valores textuales, los cuales deben estar encerrados en comillas, ya sean comillas simples o dobles. Por ejemplo:
texto <- "UDENAR"
En R, para visualizar el contenido de un objeto que hemos creado previamente, tenemos varias opciones. Una de las formas más simples es escribir directamente el nombre del objeto en la consola y presionar ‘Enter’. En este caso, mostraremos el valor de la variable creada anteriormente cuyo nombre es “texto”.
texto
## [1] "UDENAR"
R es una herramienta poderosa por lo cual permite realizar una variedad de operaciones matemáticas básicas para el análisis de datos, por ejemplo:
Suma
5 + 65
## [1] 70
Resta
10 - 7
## [1] 3
Multiplicación
56 * 7
## [1] 392
División
20 / 5
## [1] 4
Potenciación
6^3
## [1] 216
R no solo es útil para realizar operaciones matemáticas, sino que también puede emplearse para evaluar preguntas de igualdad y realizar comparaciones entre datos. Cuando es la igualdad verdadera, La respuesta será TRUE; caso contrario, la respuesta será FALSE. Ejemplo:
3 == 5 # tres es igual a 5?
## [1] FALSE
5 != 0 # cinco es distinto de 0?
## [1] TRUE
2 > 9 # dos es mayor que nueve?
## [1] FALSE
5 >= 5 # cinco es mayor o igual que 5?
## [1] TRUE
manzana <= 1 # El Objeto manzana es menor o igual que 1?
## [1] FALSE
a. TRUE y FALSE: Estos son valores lógicos que representan respuestas verdaderas o falsas, respectivamente, en evaluaciones condicionales. También puedes usar T y F para representarlos de manera abreviada.
b. NA: Este valor especial representa datos faltantes o no disponibles en un conjunto de datos. Es importante destacar que NA es distinto de cero y se utiliza para indicar la ausencia de un valor válido en un contexto numérico o de otro tipo.
c. NULL: Representa un objeto nulo en R, lo que significa que no contiene ningún valor o datos. Se utiliza para indicar la falta de un objeto o la eliminación de una variable.
d. Inf y -Inf: Estos valores representan infinito positivo y negativo, respectivamente, en contextos numéricos. Pueden surgir en cálculos matemáticos cuando se realizan divisiones por cero u otras operaciones que resultan en valores infinitos.
En R, los vectores son una estructura fundamental para almacenar
datos. Para crear un vector, puedes utilizar la función c()
(que significa “concatenate” o concatenar), seguida de los elementos que
deseas incluir en el vector, separados por comas. Por ejemplo, vamos a
crear un vector de numérico:
mi_vector_numerico <- c(1, 2, 3, 4, 5)
En R también se pueden crear Vectores Textuales, estos contienen valores de texto y deben estar entre comillas simples o dobles. Por ejemplo:
mi_vector_textual <- c("manzana", "banana", "naranja")
Para visualizar el vector simplemente escribimos su nombre y presionamos “Enter”:
mi_vector_numerico
## [1] 1 2 3 4 5
mi_vector_textual
## [1] "manzana" "banana" "naranja"
R ofrece una amplia variedad de funciones básicas que son esenciales para realizar operaciones comunes en análisis de datos y estadísticas.
En R, puedes obtener ayuda sobre una función de distintas maneras: mediante el signo de interrogación ?, usando la función help(), empleando str() o con args(nombre_de_la_función) para ver los argumentos que acepta. Estas opciones ayudan a comprender y utilizar funciones de manera efectiva. Por ejemplo:
str(mean)
## function (x, ...)
Ejemplos de algunas funciones:
a. round: Esta función se utiliza para redondear números. Puedes especificar la cantidad de decimales a la que deseas redondear un número, lo que es útil para ajustar la precisión de los resultados. Ejemplo:
round(30.856974, digits = 2)
## [1] 30.86
b. mean: La función mean calcula el valor promedio de un conjunto de números. Es útil para obtener la media aritmética de una serie de datos. Ejemplo:
numeros <- c(322, 334, 62, 8, 190)
mean(numeros)
## [1] 183.2
e. length: Devuelve la longitud (número de elementos) de un vector o lista. Puedes utilizar esta función para conocer la cantidad de elementos en una estructura de datos. Ejemplo:
mi_vector <- c("manzana", "banana", "naranja")
length(mi_vector)
## [1] 3
En R, los valores se pueden clasificar en tres categorías principales: valores textuales, valores numéricos y valores lógicos. Estos tipos de valores tienen una jerarquía en la que los valores textuales ocupan el nivel superior, seguidos de los valores numéricos y, finalmente, los valores lógicos. Ejemplo:
objeto <- c("papa, 3, NULL")
# Función class para mirar qué tipo de valor es
class(objeto)
## [1] "character"
Las variables categóricas son un tipo de variable en estadísticas y análisis de datos que representan categorías o grupos distintos en lugar de valores numéricos. Estas categorías pueden ser cualitativas, es decir, representan características que no pueden medirse con números, como colores, género, tipos de productos, estados civiles, etc.
Se dividen en dos subtipos:
a. Nominales: Las categorías no tienen un orden específico o jerarquía. Por ejemplo, el género (masculino, femenino) es una variable nominal, ya que no existe un orden natural entre las categorías.
b. Ordinales Las categorías tienen un orden o jerarquía específica. Por ejemplo, el nivel de educación (primaria, secundaria, universidad) es una variable ordinal, ya que existe un orden lógico entre las categorías. Ejemplo, el tipo sanguíneo es una variable categórica tipo nominal:
tipo_sanguineo <- c(
"A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")
class(tipo_sanguineo)
## [1] "character"
La función factor en R se utiliza para transformar variables categóricas representadas como texto en variables categóricas numéricas con niveles asignados. Esto facilita el manejo y análisis de datos categóricos. Por ejemplo, vamos a convertir la variable tipo sanguíneo (que es de tipo texto) en una variable categórica.
tipo_sanguineo <- factor(tipo_sanguineo)
# Usamos la función class para mirar qué tipo de variable tenemos ahora.
class(tipo_sanguineo)
## [1] "factor"
Para el caso de variables categóricas Ordinales, primero creamos una variable con varias categorías. Ejemplo:
nivel_educativo <- c("posgrado", "colegio", "universidad")
nivel_educativo
## [1] "posgrado" "colegio" "universidad"
y para categorizar la variable se debe hacer lo siguiente:
nivel_educativo <- factor(nivel_educativo,
levels = c("colegio",
"universidad",
"posgrado"))
nivel_educativo
## [1] posgrado colegio universidad
## Levels: colegio universidad posgrado
# Podemos observar ahora como la variable ya es de tipo ordinal con varios niveles.
Una base de datos es un conjunto organizado de datos almacenados electrónicamente que se utiliza para facilitar el acceso, la gestión y la actualización de la información.
a. Primero debemos crear las variables y sus observaciones:
titulos <- c("Titanic", "El Padrino", "Forrest Gump", "Avatar", "Star Wars")
año_estreno <- c(1997, 1972, NA, 2009, 1977)
genero <- c("Drama/Romance", "Crimen/Drama", "Drama/Comedia", "Ciencia ficción/Aventuras", "NA")
calificacion <- c(7.8, 9.2, 8.8, NA, 8.6)
director <- c("James Cameron", "Francis Ford Coppola", "Robert Zemeckis", "James Cameron", "George Lucas")
b. Procedemos a crear una matriz con la función data.frame
datos_pelis <- data.frame(titulos, año_estreno, genero, calificacion, director)
datos_pelis #procedemos a visualizar el data frame que hemos creado
## titulos año_estreno genero calificacion
## 1 Titanic 1997 Drama/Romance 7.8
## 2 El Padrino 1972 Crimen/Drama 9.2
## 3 Forrest Gump NA Drama/Comedia 8.8
## 4 Avatar 2009 Ciencia ficción/Aventuras NA
## 5 Star Wars 1977 NA 8.6
## director
## 1 James Cameron
## 2 Francis Ford Coppola
## 3 Robert Zemeckis
## 4 James Cameron
## 5 George Lucas
En R, uno de los ejemplos más notables de bases de datos nativas es el paquete datasets. Este paquete incluye una variedad de conjuntos de datos incorporados que se utilizan comúnmente para ejemplos y prácticas en análisis de datos y estadísticas. Algunos de estos conjuntos de datos incluyen mtcars (datos de automóviles), iris (datos de flores iris), airquality (datos de calidad del aire) y muchos más.
help(package = "datasets") #Para mirar que Bases de datos tenemos disponibles de manera nativa
Ahora escogemos una base de datos y la subimos al Global environment, de la siguiente manera:
data("Orange")
Podemos usar funciones como head y tail con sus respectivos parámetros para mirar el cabezario y el final de las observaciones.
head(x = Orange) #para ver el cabezario
## 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
tail(x = Orange) #para ver el final
## 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
También podemos ser más especéficos y mirar el cabezario solamente de la primera observación, o el final de las 2 ultimas observaciones de la siguiente manera:
head(Orange, n = 1)
## Tree age circumference
## 1 1 118 30
tail(Orange, n = 2)
## Tree age circumference
## 34 5 1372 174
## 35 5 1582 177
También podemos ver la estructura de la base de Datos asi:
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)"
Existen también muchas otras funciones adicionales, que nos sirven para mirar diferentes aspectos, como el número de filas, número de columnas, etc. aquí algunos ejemplos:
nrow(Orange)
## [1] 35
ncol(Orange)
## [1] 3
dim(Orange)
## [1] 35 3
names(Orange)
## [1] "Tree" "age" "circumference"
También podemos acceder a una columna especifica, de la siguiente manera, por ejemplo:
Orange$Tree
## [1] 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5
## Levels: 3 < 1 < 5 < 2 < 4
Otra forma de acceder, en este caso con la posición especifica entre corchetes.
Orange[, 2]
## [1] 118 484 664 1004 1231 1372 1582 118 484 664 1004 1231 1372 1582 118
## [16] 484 664 1004 1231 1372 1582 118 484 664 1004 1231 1372 1582 118 484
## [31] 664 1004 1231 1372 1582
Orange[2 , ]
## Tree age circumference
## 2 1 484 58
Orange[2 , 2]
## [1] 484
Orange[1, "age"]
## [1] 118
La función attach en R se utiliza para adjuntar un data frame o una lista al entorno global de R. Cuando se adjunta un objeto, como un data frame, las columnas de ese data frame se vuelven accesibles sin la necesidad de hacer referencia al nombre del objeto. Esto puede facilitar la manipulación de datos al escribir código más conciso.
attach(Orange)
Tree
## [1] 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5
## Levels: 3 < 1 < 5 < 2 < 4
detach(Orange) #para deshacer el Attach.
Se puede acceder a varias columnas, únicamente con la función concatenate. Ejemplo:
Orange[ ,c("Tree", "age")]
## Tree age
## 1 1 118
## 2 1 484
## 3 1 664
## 4 1 1004
## 5 1 1231
## 6 1 1372
## 7 1 1582
## 8 2 118
## 9 2 484
## 10 2 664
## 11 2 1004
## 12 2 1231
## 13 2 1372
## 14 2 1582
## 15 3 118
## 16 3 484
## 17 3 664
## 18 3 1004
## 19 3 1231
## 20 3 1372
## 21 3 1582
## 22 4 118
## 23 4 484
## 24 4 664
## 25 4 1004
## 26 4 1231
## 27 4 1372
## 28 4 1582
## 29 5 118
## 30 5 484
## 31 5 664
## 32 5 1004
## 33 5 1231
## 34 5 1372
## 35 5 1582
También podemos acceder solamente a lo que sea diferente de 1 a 2
Orange[, -c(1:2)]
## [1] 30 58 87 115 120 142 145 33 69 111 156 172 203 203 30 51 75 108 115
## [20] 139 140 32 62 112 167 179 209 214 30 49 81 125 142 174 177