Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Funciones Básicas de R para Análisis de Datos, Guías, Proyectos, Investigaciones de Programación Informática

Una introducción a las funciones básicas de r para el análisis de datos, incluyendo la mediana, desviación estándar, varianza, rango, longitud, producto, cuantiles, suma acumulativa, complete.cases, duplicated, merge y na.omit. Se proporcionan ejemplos prácticos para ilustrar el uso de cada función.

Tipo: Guías, Proyectos, Investigaciones

2023/2024

Subido el 22/10/2024

kayne-lover
kayne-lover 🇲🇽

2 documentos

1 / 42

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Funci´on aggregate() en R
La funci´on aggregate() en R se utiliza para aplicar una funci´on a subconjuntos
de datos definidos por una o as variables categ´oricas. Es especialmente ´util
para resumir datos agrupados en an´alisis exploratorios o en la generaci´on de
reportes.
Sintaxis
aggregate(x, by, FUN, ...)
x: Un data frame o una ormula. Cuando es un data frame, especifica la
variable a agregar. Cuando es una ormula, se usa para definir la relaci´on
entre la variable de respuesta y los factores.
by: Una lista de variables (normalmente factores) por las cuales se agru-
par´an los datos.
FUN: La funci´on que se aplicar´a a los datos agrupados (por ejemplo, mean,
sum,length, etc.).
...: Argumentos adicionales que se pasan a la funci´on FUN.
Ejemplos
1. Calcular la media de una variable num´erica agrupada por una
variable categ´orica
Supongamos que tienes un data frame con la altura de diferentes personas junto
con su enero:
1# Cr ea r un d at a fr a me d e ej em p lo
2da to s <- data.f ra m e (
3altura = c(1 60 , 17 0 , 16 5 , 1 80 , 1 75 , 16 0 , 1 70 ) ,
4genero = c(" M uj e r " ," M uj er " ," Hombre"," Hombre","Hombre "," M uj er
"," Mu je r " )
5)
6
7# Ca lc u la r la m ed ia d e la a lt u ra p or g en e ro
8resultado <- a g gr e ga t e (altura ~ge ne ro , data = d ato s , FU N = mean)
9
10 pr in t ( r es u lt a do )
El resultado ser´a:
genero altura
1 Hombre 173.33
2 Mujer 165.00
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a

Vista previa parcial del texto

¡Descarga Funciones Básicas de R para Análisis de Datos y más Guías, Proyectos, Investigaciones en PDF de Programación Informática solo en Docsity!

Funci´on aggregate() en R

La funci´on aggregate() en R se utiliza para aplicar una funci´on a subconjuntos de datos definidos por una o m´as variables categ´oricas. Es especialmente ´util para resumir datos agrupados en an´alisis exploratorios o en la generaci´on de reportes.

Sintaxis

aggregate(x, by, FUN, ...)

  • x: Un data frame o una f´ormula. Cuando es un data frame, especifica la variable a agregar. Cuando es una f´ormula, se usa para definir la relaci´on entre la variable de respuesta y los factores.
  • by: Una lista de variables (normalmente factores) por las cuales se agru- par´an los datos.
  • FUN: La funci´on que se aplicar´a a los datos agrupados (por ejemplo, mean, sum, length, etc.).
  • ...: Argumentos adicionales que se pasan a la funci´on FUN.

Ejemplos

  1. Calcular la media de una variable num´erica agrupada por una variable categ´orica

Supongamos que tienes un data frame con la altura de diferentes personas junto con su g´enero: 1 # Crear un data frame de ejemplo 2 datos <- data. frame ( 3 altura = c (160 , 170 , 165 , 180 , 175 , 160 , 170) , 4 genero = c ( " Mujer " , " Mujer " , " Hombre " , " Hombre " , " Hombre " , " Mujer " , " Mujer " ) 5 ) 6 7 # Calcular la media de la altura por genero 8 resultado <- aggregate ( altura ~ genero , data = datos , FUN = mean ) 9 10 print ( resultado )

El resultado ser´a:

genero altura 1 Hombre 173. 2 Mujer 165.

Explicaci´on de la expresi´on valor ~ grupo

En R, la expresi´on valor ~ grupo es una f´ormula que se utiliza para definir relaciones entre variables dentro de una funci´on, como aggregate. Esta ex- presi´on se interpreta de la siguiente manera:

  • valor: Es la variable dependiente o respuesta, que es la variable que queremos agrupar y sobre la cual aplicaremos una funci´on de resumen, como la media o la suma.
  • grupo: Es la variable independiente o factor, que define los grupos o categor´ıas seg´un los cuales se agrupar´an los datos.

El s´ımbolo ~ (tilde) se lee como ”en funci´on de” o ”dependiendo de”. Por lo tanto, la f´ormula valor ~ grupo significa que queremos aplicar una operaci´on a la variable valor, agrupando los datos seg´un los niveles de la variable grupo. En resumen, valor ~ grupo indica que la variable valor se debe agrupar de acuerdo con los niveles de grupo, y luego aplicar la funci´on especificada a los valores de valor dentro de cada grupo.

  1. Sumar las ventas por mes y region Imagina que tienes un data frame con datos de ventas, donde las ventas se registran por mes y por regi´on: 1 # Crear un data frame de ejemplo 2 ventas <- data. frame ( 3 mes = rep ( c ( " Enero " , " Febrero " , " Marzo " ) , times = 2) , 4 region = rep ( c ( " Norte " , " Sur " ) , each = 3) , 5 ventas = c (100 , 150 , 200 , 120 , 180 , 220) 6 ) 7 8 # Sumar las ventas por mes y region 9 resultado <- aggregate ( ventas ~ mes + region , data = ventas , FUN = sum ) 10 11 print ( resultado )

El resultado ser´a:

mes region ventas 1 Enero Norte 100 2 Febrero Norte 150 3 Marzo Norte 200 4 Enero Sur 120 5 Febrero Sur 180 6 Marzo Sur 220

  1. Contar la cantidad de observaciones por grupo

Otra aplicaci´on com´un es contar cu´antas observaciones caen en cada grupo. Para esto, puedes usar la funci´on length.

C´odigo en R

1 # otra forma de agregar una columna en un data. frame 2 3 cal <- data. frame ( Nombre = c ( " Suleika " ," Camila " ," Sandra " ) , 4 parcial1 = c (9 ,9 ,7) , 5 parcial2 = c (9 ,7 ,6) , 6 parcial3 = c (10 ,8 ,7) , 7 tareas = c (10 ,10 ,10) , 8 proyecto = c (8 ,6 ,7) ) 9 10 cal 11 12 cal _ final = ((( cal $ parcial1 + cal $ parcial2 + cal $ parcial3 ) / 3.0) * 0.7) + 13 ( cal $ tareas * 0.1) + ( cal $ proyecto * 0.2) 14 cal _ final 15 16 calificaciones $ calfinal <- cal _ final 17 18 calificaciones

C´odigo en R

1 # Como agregar una registro en un data. frame 2 3 cal <- data. frame ( Nombre = c ( " Suleika " ," Camila " ," Andrea " ) , 4 parcial1 = c (9 ,9 ,7) , 5 parcial2 = c (9 ,7 ,6) , 6 parcial3 = c (10 ,8 ,7) , 7 tareas = c (10 ,10 ,10) , 8 proyecto = c (8 ,6 ,7) ) 9 10 registronuevo = data. frame ( Nombre = " Javier " , 11 parcial1 =7 , parcial2 =8 , 12 parcial3 =9 , tareas =8 , 13 proyecto =7) 14 15 registronuevo 16 17 new = rbind ( cal , registronuevo ) 18 new

  • quantile(): Calcula los cuantiles de un conjunto de datos. cuantiles <- quantile ( c (3 , 5 , 1 , 8 , 7) , probs = c ,→ (0.25 , 0.5 , 0.75) )

Resultado : 25% 50% 75%

3.0 5.0 7.

  • cumsum(): Devuelve la suma acumulativa de los elementos de un vector.

suma _ acumulativa <- cumsum ( c (3 , 5 , 1 , 8 , 7) )

Resultado : 3 8 9 17 24

Estas funciones son herramientas comunes y ´utiles para realizar an´alisis de datos y c´alculos en R.

La funci´on complete.cases en R

La funci´on complete.cases en R se utiliza para identificar las filas en un data frame o matriz que no contienen valores faltantes (NA). Devuelve un vector l´ogico que indica cu´ales filas tienen datos completos (sin valores faltantes) y cu´ales no.

Sintaxis b´asica

complete.cases(data)

  • data: Puede ser un data frame, una matriz o un vector.

Funcionamiento

complete.cases revisa cada fila en el data frame o matriz y devuelve TRUE si la fila no tiene valores faltantes (NA) y FALSE si la fila tiene uno o m´as NA. Esto es ´util para filtrar filas completas de datos cuando se trabaja con conjuntos incompletos.

Ejemplos

  1. Uso b´asico con un data frame

Crear un data frame con algunos valores NA

df <- data. frame ( Nombre = c ( " Ana " , " Beto " , NA , " Diana " ) , Edad = c (23 , 34 , 28 , NA ) , Ciudad = c ( " Madrid " , NA , " Barcelona " , " Sevilla " ) )

Identificar las filas completas ( sin NA )

completas <- complete. cases ( df ) print ( completas )

Resultado:

[1] TRUE FALSE FALSE FALSE

En este caso, s´olo la primera fila est´a completa.

  1. Filtrar filas completas

Podemos usar complete.cases para filtrar las filas que no tienen valores fal- tantes:

Filtrar las filas completas

df _ completo <- df [ complete. cases ( df ) , ] print ( df _ completo )

Generaci´on de Datos Aleatorios con sample en R

La funci´on sample en R se utiliza para seleccionar elementos al azar de un conjunto de datos, con o sin reemplazo. Es ´util para realizar un muestreo aleatorio de un conjunto finito de valores, como una lista de n´umeros o una secuencia de enteros.

Sintaxis de sample

sample(x, size, replace = FALSE, prob = NULL)

Los par´ametros de la funci´on son los siguientes:

  • x: El vector o conjunto de datos del cual se van a tomar las muestras.
  • size: El n´umero de elementos que se quieren muestrear.
  • replace: Un valor l´ogico. Si es TRUE, se permite el reemplazo (los elemen- tos pueden ser seleccionados m´as de una vez). Si es FALSE (por defecto), no se permite el reemplazo.
  • prob: Un vector de probabilidades para cada uno de los elementos de x. Si no se especifica, se asume que todos los elementos tienen la misma probabilidad de ser seleccionados.

Funcionamiento

  • sample(x, size) selecciona al azar size elementos del conjunto x sin reemplazo (por defecto).
  • Si se establece replace = TRUE, los elementos pueden ser seleccionados m´as de una vez.
  • Si se proporcionan probabilidades en el argumento prob, se seleccionan los elementos con las probabilidades especificadas.

Ejemplo 1: Selecci´on sin reemplazo

Supongamos que queremos seleccionar 5 n´umeros aleatorios del conjunto de enteros del 1 al 10:

set.seed(123) # Para reproducir los resultados muestra <- sample(1:10, size = 5) print(muestra)

En este ejemplo, sample seleccionar´a 5 n´umeros diferentes sin repetici´on, ya que el reemplazo no est´a permitido.

Ejemplo 2: Selecci´on con reemplazo

Si permitimos el reemplazo, algunos n´umeros pueden repetirse:

set.seed(123) muestra_reemplazo <- sample(1:10, size = 5, replace = TRUE) print(muestra_reemplazo)

Aqu´ı, los n´umeros pueden aparecer m´as de una vez, ya que cada vez que se selecciona un n´umero, vuelve a estar disponible para la siguiente selecci´on.

Ejemplo 3: Uso de probabilidades

Podemos asignar probabilidades diferentes a cada n´umero. Por ejemplo, si quer- emos que los n´umeros m´as grandes tengan m´as probabilidad de ser seleccionados:

set.seed(123) muestra_prob <- sample(1:10, size = 5, prob = c(1,1,1,1,1,2,2,2,2,2)) print(muestra_prob)

En este caso, los n´umeros 6 a 10 tienen el doble de probabilidad de ser seleccionados en comparaci´on con los n´umeros 1 a 5.

Explicaci´on del Resultado

  • Muestreo sin reemplazo: Cada elemento del conjunto puede ser selec- cionado solo una vez, lo que asegura que todos los elementos seleccionados sean ´unicos.
  • Muestreo con reemplazo: Los elementos pueden ser seleccionados m´as de una vez, lo que permite que los resultados tengan valores repetidos.
  • Probabilidades: Se puede influir en el proceso de selecci´on asignando probabilidades, lo que permite controlar la frecuencia con la que se selec- cionan ciertos elementos.

Resumen

  • La funci´on sample genera una muestra aleatoria a partir de un conjunto de datos.
  • Se puede realizar la selecci´on con o sin reemplazo.
  • Las probabilidades pueden ajustarse para favorecer ciertos elementos en el muestreo.
  • Aproximadamente el 95% estar´a dentro de dos desviaciones est´andar (en- tre 30 y 70).

Ejemplo Gr´afico

Podemos visualizar los datos generados con un histograma:

hist(valores, main="Distribuci´on normal de los datos", xlab="Valores")

Este gr´afico mostrar´a c´omo los valores aleatorios se distribuyen en torno a la media de 50 con una dispersi´on determinada por la desviaci´on est´andar de

Resumen

  • La funci´on rnorm genera valores aleatorios de una distribuci´on normal.
  • Los par´ametros mean y sd determinan la posici´on y la dispersi´on de la distribuci´on.
  • Se puede ajustar la cantidad de valores generados y la forma de la dis- tribuci´on cambiando estos par´ametros.

Generaci´on de Datos Aleatorios con runif en R

La funci´on runif en R se utiliza para generar n´umeros aleatorios que siguen una distribuci´on uniforme. En una distribuci´on uniforme, todos los valores dentro de un intervalo tienen la misma probabilidad de ser seleccionados. Esto contrasta con otras distribuciones, como la normal, en la que los valores cercanos a la media son m´as probables.

Sintaxis de runif

runif(n, min = 0, max = 1)

Los par´ametros de la funci´on son los siguientes:

  • n: N´umero de valores aleatorios a generar.
  • min: L´ımite inferior del intervalo. Por defecto, es 0.
  • max: L´ımite superior del intervalo. Por defecto, es 1.

Funcionamiento

  • runif(n) genera n n´umeros aleatorios entre 0 y 1 (el intervalo por defecto).
  • Si se especifican un min y un max, los n´umeros generados estar´an dentro de ese intervalo.

Ejemplo

Supongamos que queremos generar 10 n´umeros aleatorios entre 5 y 10:

set.seed(123) # Para reproducir los resultados valores <- runif(10, min = 5, max = 10) print(valores)

En este caso, runif generar´a 10 n´umeros que estar´an uniformemente dis- tribuidos en el intervalo [5, 10]. Cada n´umero dentro de este rango tiene la misma probabilidad de ser seleccionado.

Explicaci´on del Resultado

Los valores generados por runif estar´an distribuidos de manera uniforme en el intervalo especificado. Esto significa que no habr´a una mayor concentraci´on de n´umeros en ninguna parte del intervalo: cualquier subintervalo del mismo tama˜no contendr´a aproximadamente la misma cantidad de n´umeros aleatorios.

La funci´on duplicated en R

1 Introducci´on

La funci´on duplicated en R se utiliza para identificar elementos duplicados en un vector, data.frame o matriz. Retorna un vector l´ogico que indica si un elemento es una duplicaci´on de uno que aparece anteriormente en el objeto.

2 Sintaxis

duplicated(x, fromLast = FALSE)

Donde:

  • x: El vector, data.frame o matriz en el que se desea identificar duplicados.
  • fromLast: Un valor l´ogico que indica si se deben considerar los duplicados desde el final hacia el principio. Por defecto es FALSE.

3 Ejemplos

3.1 Ejemplo 1: Identificar duplicados en un vector

Supongamos que tenemos un vector con algunos elementos repetidos y queremos identificar cu´ales son duplicados.

Crear un vector con duplicados

vector <- c (1 , 2 , 3 , 2 , 4 , 5 , 3)

Identificar duplicados

duplicados <- duplicated ( vector ) print ( duplicados )

Resultado:

[1] FALSE FALSE FALSE TRUE FALSE FALSE TRUE

En este ejemplo, los elementos en las posiciones 4 y 7 son duplicados de los elementos que aparecen anteriormente en el vector.

3.2 Ejemplo 2: Identificar duplicados en un data.frame

Supongamos que tenemos un data.frame con algunas filas duplicadas y quere- mos identificarlas.

Crear un data frame con filas duplicadas

datos <- data. frame ( ID = c (1 , 2 , 3 , 2 , 4 , 5 , 3) , Nombre = c ( " Juan " , " Ana " , " Carlos " , " Ana " , " Lucia " , " Juan " ,→ , " Carlos " ) )

Imprimir el data frame original

print ( datos )

Identificar filas duplicadas

duplicados <- duplicated ( datos ) print ( duplicados )

Resultado:

[1] FALSE FALSE FALSE TRUE FALSE TRUE TRUE

Aqu´ı, las filas 4, 6 y 7 son duplicadas de filas anteriores en el data.frame.

3.3 Ejemplo 3: Identificar duplicados desde el final hacia

el principio

Podemos usar el argumento fromLast = TRUE para identificar duplicados desde el final hacia el principio.

Identificar duplicados desde el final hacia el principio

duplicados _ desde _ final <- duplicated ( vector , fromLast = TRUE ,→ ) print ( duplicados _ desde _ final )

Resultado:

[1] FALSE TRUE TRUE FALSE FALSE FALSE FALSE

En este caso, los elementos en las posiciones 1 y 4 son duplicados de elementos que aparecen despu´es de ellos en el vector.

3.4 Ejemplo 4: Eliminar filas duplicadas en un data.frame

Para eliminar filas duplicadas en un data.frame, podemos usar la funci´on unique combinada con duplicated.

Eliminar filas duplicadas

datos _ sin _ duplicados <- datos [! duplicated ( datos ) , ] print ( datos _ sin _ duplicados )

Ejercicio 0

DataFrame

September 2024

1 Ejercicio 0

Imagina que trabajas en una empresa que vende productos en diferentes regiones y deseas realizar un an´alisis de las ventas trimestrales de tus productos. Tienes un conjunto de datos que contiene la siguiente informaci´on en un data frame o tabla, llamado ventas:

Columna Producto: El nombre del producto vendido. ”Martillos”, ”Serruchos”, ”Clavos”, ”Mangueras”, ”Pinzas” Columna Region: La regi´on donde se realiz´o la venta. Hay 6 regiones: (1, 2, 3, 4, 5 y 6). Columna Trimestre: El trimestre en que se realiz´o la venta (1, 2, 3 o 4). Columna Ventas: El monto de las ventas en esa transacci´on. De 0 a 1000 pesos.

Nota: Genere de manera aleatoria la tabla ventas con 200 registros.

Realizar las siguientes operaciones auxili´andose de las funciones estudiadas anteriormente.

  1. Calcular el total de ventas por trimestre.
  2. Encontrar el producto m´as vendido en cada trimestre.
  3. Calcular el promedio de ventas por regi´on para todo el a˜no.

Soluci´on

2 Formar el data frame de ventas

Genera datos aleatorios para la siguiente tabla o data.frame de 200 datos

con las siguientes caracteristicas:

Columnas:

Producto: nombre del producto vendido ("Martillos", "Serruchos",

"Clavos", "Mangueras", "Pinzas")

Region: la region en que se realizo la venta (1, 2, 3, 4, 5, 6)

Trimestre: el trimestre en que se realizo la venta (1, 2, 3 o 4)

Ventas: El monto de las ventas en esa transaccion (0 a 1000 pesos).

vproducto = sample(c("Martillos", "Serruchos", "Clavos", "Mangueras", "Pinzas"), size = 200, replace = TRUE)

vregion = sample(1:6, size = 200, replace = TRUE)

vtrimestre = sample(1:4, size = 200, replace = TRUE)

vventas = runif(200, min = 0, max = 1000)

ventas <- data.frame(Producto = vproducto, Region = vregion, Trimestre = vtrimestre, Ventas = vventas)

ventas

Producto Region Trimestre Ventas

1 Martillos 6 3 922.

2 Mangueras 5 3 156.

3 Clavos 5 3 851.

4 Martillos 3 4 765.

5 Mangueras 2 4 894.

6 Mangueras 3 1 932.

7 Martillos 3 4 879.

8 Serruchos 1 2 987.

9 Clavos 5 1 791.

10 Serruchos 3 4 588.

11 Mangueras 4 2 189.

12 Martillos 1 1 504.

13 Mangueras 5 2 186.

14 Clavos 1 3 660.

15 Martillos 5 4 391.

16 Mangueras 2 2 847.

17 Pinzas 5 3 31.

18 Martillos 1 3 765.