Electiva en R
para crear un chunk o linea de codigo ctrl+alt+i
los valores se asignan con una “<” y un “-” seguidos, ahí se puede definir sea un valor, una matriz, un data frame, lo que uno escriba se va a pestaña de environment.
si yo quiero hacer que esas variables se sume u se muestre en la consola debo de utilizar la función print
## [1] 11
## [1] 1 7 8 9 5
Es importante tener en cuenta algo, los vactores son conjunto de datos, por ende, para unir o cocatenar ese conjunto de datos siempre debe estar con la letra c sino, la variable no se va a definir,
vector mal hecho (1,2,3,4,5) Vector bien hecho c(1,2,3,4,5)
para ver cuantos elementos hay en un vector se utiliza la función leght
## [1] 5
para esto se utiliza corchetes[] y la posición del valor que se quiera buscar, es decir
## [1] 7
Se utiliza los corchetes y dos puntos entre las posiciones, voy a poner 2 ejemplos
ejemplo 1 solo se va mostrar de la posición 1 a la 3
## [1] 1 7 8
ejemplo 2 ahora solo que me muestre de la pocisión 4 a la 5
## [1] 9 5
entoneces se pone corchetes menos y la pocisión [-x]
## [1] 1 7 9 5
si quiero definir un intervalo de numeros naturales es de esta forma, entre el numero que se comienza y el que se termina
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
cada vez que le doy una , de tomar el primer numero, luego vaya hasta el numero y salte los numeros
## [1] 5 7 9 11 13 15 17 19
Una matriz en R es una estructura de datos para almacenar objetos del mismo tipo. Si quieres almacenar diferentes objetos dentro de una estructura de datos en R, usa un data frame en su lugar.
En R, length() devuelve el número total de elementos en un objeto (como un vector), mientras que dim() devuelve las dimensiones (filas y columnas) de objetos multidimensionales como matrices, data frames y arrays.
## [1] 9
## [1] 9 1
##organizar un vector 3x3
toma un objeto existente llamado a (generalmente un vector) y lo reorganiza para convertirlo en una matriz de 3 filas y 3 columnas. ejemplo
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
con c(3, 3): La función c() crea un vector. En este caso, crea un vector numérico con dos elementos: 3 y 3. Al usarlo con dim(), el primer número representa las filas y el segundo, las columnas.
erow sirve para ver numero de filas y ecol numero de columnas, es decir
## [1] 3
## [1] 3
##byrow byrow le dice a R cómo ordenar los datos al crear una matriz: si debe llenarla por filas (horizontalmente) o por columnas (verticalmente). byrow = TRUE (por fila) byrow = FALSE (por columna)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
cambio las filas por columnas
combinar como columnas
## X Y Z
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
combinar como filas
## [,1] [,2] [,3]
## X 1 2 3
## Y 4 5 6
## Z 7 8 9
## edad nombre resulta
## pedro 1 4 7
## paco 2 5 8
## luis 3 6 9
primero definimos las variables
luego creamos el data frame con data.frame y dandolo a una variale
## mes juan elian isis
## 1 enero 3 1 5
## 2 febrero 4 1 5
## 3 marzo 1 0 5
## 4 abril 5 5 5
paquetes son funciones que crean las personas, de utilidades, va necesitar instalar el paquete, y ejecutar el paquete
aqui se va a instalar tidyverse que es uno de los paquetes más inportantes de r para hacer analisis de datos
los paquetes solo se tienen que instalar una vez
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.1.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
ya con tidyverse podemos ver lo siguiente
## mes juan elian isis
## Length:4 Min. :1.00 Min. :0.00 Min. :5
## Class :character 1st Qu.:2.50 1st Qu.:0.75 1st Qu.:5
## Mode :character Median :3.50 Median :1.00 Median :5
## Mean :3.25 Mean :1.75 Mean :5
## 3rd Qu.:4.25 3rd Qu.:2.00 3rd Qu.:5
## Max. :5.00 Max. :5.00 Max. :5
## [1] 8
## [1] 15
## [1] 1
## [1] 1 15
## [1] 8
## [1] 4.472136
## [1] 20
x <- sample.int(15): Esta línea crea un objeto (un vector) llamado x. La función sample.int(15) genera una muestra aleatoria de los números enteros del 1 al 15, en un orden aleatorio y sin repetirlos.
mean(x): Calcula el promedio (la media aritmética) de todos los números guardados en x.
max(x): Encuentra el valor máximo (el número más grande) dentro de x.
min(x): Encuentra el valor mínimo (el número más pequeño) dentro de x.
range(x): Devuelve el valor mínimo y el máximo de x juntos.
median(x): Calcula la mediana, que es el valor que se encuentra justo en el medio de la lista de números cuando están ordenados.
sd(x): Calcula la desviación estándar (standard deviation). Esta es una medida de dispersión que indica qué tan esparcidos están los números con respecto al promedio. Un valor bajo significa que los datos están agrupados cerca del promedio.
var(x): Calcula la varianza. Es otra medida de dispersión y es simplemente la desviación estándar elevada al cuadrado.
## [1] 10 14 14 12 5
## [1] 30 25
## [1] 5.0 7.0 7.0 6.0 2.5
## [1] 5.0 7.0 7.0 6.0 2.5
y <- matrix(sample.int(10), nrow = 2, ncol = 5): Esta línea crea una matriz llamada y. sample.int(10): Genera una muestra aleatoria de los números del 1 al 10. nrow = 2, ncol = 5: Organiza esos números en una tabla con 2 filas (rows) y 5 columnas (columns).
colSums(y): Calcula la suma de cada columna de la matriz y.
rowSums(y): Calcula la suma de cada fila de la matriz y.
colMeans(y): Calcula el promedio de cada columna de la matriz y.
## [1] 261.3099
## [1] 246.4286
data(“chickwts”): Carga el conjunto de datos llamado chickwts (pesos de pollitos) en tu sesión de R. Este dataset contiene información sobre el peso de pollitos según el tipo de alimento que recibieron.
View(chickwts): El # al inicio convierte esta línea en un comentario. Esto significa que R no la ejecutará. Si le quitaras el #, se abriría una nueva pestaña mostrándote la tabla chickwts completa.
mean(chickwts$weight): Calcula el promedio de la columna weight (peso) del conjunto de datos chickwts. El símbolo $ se usa para acceder a una columna específica dentro de una tabla (o data frame).
w <- seq(2,20,2)
y <- c(95,81,72,75,79,71,55,47,32,24)
z <- c(71,74,64,68,59,63,68,71,78,74)
plot(w,y)
w <- seq(2, 20, 2): Crea un vector w que contiene una secuencia de
números que empieza en 2, termina en 20 y va de 2 en 2 (es decir: 2, 4,
6, …, 20).
y <- c(…) y z <- c(…): La función c() sirve para combinar o concatenar valores en un vector. Aquí creas los vectores y y z con los números que especificaste.
plot(w, y): Genera un gráfico de dispersión (un gráfico de puntos). Coloca los valores del vector w en el eje X (horizontal) y los valores del vector y en el eje Y (vertical).
plot(w, y, …): La función base es la misma, pero ahora le agregas
opciones:
“b”: Indica el tipo (type) de gráfico. “b” significa que quieres mostrar ambos (both) puntos y líneas que los conectan.
cex = 2: cex significa “expansión de caracter”. Un valor de 2 hace que los puntos del gráfico sean el doble de grandes que su tamaño normal.
lty = 3: lty significa “tipo de línea” (line type). El 3 corresponde a una línea punteada.
col = “darkred”: col establece el color del gráfico. En este caso, rojo oscuro. ## histograma
hist(chickwts\(weight): La función hist() crea
un histograma. Este gráfico muestra la frecuencia con la que aparecen
los valores de peso (chickwts\)weight) en diferentes rangos. Es
muy útil para entender cómo se distribuyen los datos.
hist(chickwts$weight,main = "chickens' weight",xlab = "frequency", col="lightgreen",border = "black")
hist(chickwts$weight, …): De nuevo, usas argumentos para
personalizar:
main = “chickens’ weight”: Añade un título principal al gráfico.
xlab = “frequency”: Pone una etiqueta en el eje X (horizontal). Nota: Generalmente en un histograma, el eje X representa la variable (en este caso, “weight”) y el eje Y la frecuencia. Tu código etiqueta el eje X como “frequency”.
col = “lightgreen”: Rellena las barras del histograma con color verde claro.
border = “black”: Pinta el borde de las barras de color negro.
boxplot(w, y, z): Crea un diagrama de caja para cada uno de los vectores
que le pasas (w, y, y z). Los muestra uno al lado del otro, lo que
facilita la comparación de su distribución, mediana y rangos.
library(readxl)
#Sales <- read_excel("Sales.xlsx")
#View(Sales)
#mean(Sales$John)
#boxplot(Sales$Jimmy,Sales$Sue,Sales$John,Sales$Sally,Sales$Gilbert)library(readxl): Carga el paquete readxl. Los paquetes son colecciones de funciones, y este en particular contiene las herramientas para leer archivos de Excel.
Sales <- read_excel(“Sales.xlsx”): Lee el archivo llamado “Sales.xlsx” (que debe estar en tu carpeta de trabajo) y guarda su contenido en una tabla llamada Sales.
mean(Sales$John): Calcula el promedio de la columna llamada John de la tabla Sales.
boxplot(Sales$Jimmy, …): Crea un diagrama de caja para cada una de las columnas de ventas especificadas (Jimmy, Sue, John, etc.) de la tabla Sales. ## correlación
cor(Sales\(Jimmy, Sales\)Sue): Calcula el coeficiente de correlación entre las ventas de Jimmy y las de Sue.
Un resultado cercano a 1 indica una correlación positiva fuerte (si las ventas de Jimmy suben, las de Sue también tienden a subir).
Un resultado cercano a -1 indica una correlación negativa fuerte (si las de Jimmy suben, las de Sue tienden a bajar).
Un resultado cercano a 0 indica que no hay una relación lineal clara
## Installing package into '/home/chinorrips/R/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
## Installing package into '/home/chinorrips/R/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
install.packages(“nombre_del_paquete”): Este comando se conecta a internet y descarga e instala un paquete en tu computadora. Solo necesitas hacerlo una vez por paquete.
library(nombre_del_paquete): Este comando carga un paquete que ya está instalado en tu sesión actual de R, para que puedas usar sus funciones y datos. Debes hacerlo cada vez que inicias R y quieres usar ese paquete.
palmerpenguins: Contiene un famoso conjunto de datos sobre pingüinos.
dplyr: Es un paquete extremadamente popular para la manipulación y limpieza de datos.
## # A tibble: 6 × 8
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## <fct> <fct> <dbl> <dbl> <int> <int>
## 1 Adelie Torgersen 39.1 18.7 181 3750
## 2 Adelie Torgersen 39.5 17.4 186 3800
## 3 Adelie Torgersen 40.3 18 195 3250
## 4 Adelie Torgersen NA NA NA NA
## 5 Adelie Torgersen 36.7 19.3 193 3450
## 6 Adelie Torgersen 39.3 20.6 190 3650
## # ℹ 2 more variables: sex <fct>, year <int>
## tibble [344 × 8] (S3: tbl_df/tbl/data.frame)
## $ species : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ island : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ bill_length_mm : num [1:344] 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
## $ bill_depth_mm : num [1:344] 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
## $ flipper_length_mm: int [1:344] 181 186 195 NA 193 190 181 195 193 190 ...
## $ body_mass_g : int [1:344] 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
## $ sex : Factor w/ 2 levels "female","male": 2 1 1 NA 1 2 1 2 NA NA ...
## $ year : int [1:344] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
## species island bill_length_mm bill_depth_mm
## Adelie :152 Biscoe :168 Min. :32.10 Min. :13.10
## Chinstrap: 68 Dream :124 1st Qu.:39.23 1st Qu.:15.60
## Gentoo :124 Torgersen: 52 Median :44.45 Median :17.30
## Mean :43.92 Mean :17.15
## 3rd Qu.:48.50 3rd Qu.:18.70
## Max. :59.60 Max. :21.50
## NA's :2 NA's :2
## flipper_length_mm body_mass_g sex year
## Min. :172.0 Min. :2700 female:165 Min. :2007
## 1st Qu.:190.0 1st Qu.:3550 male :168 1st Qu.:2007
## Median :197.0 Median :4050 NA's : 11 Median :2008
## Mean :200.9 Mean :4202 Mean :2008
## 3rd Qu.:213.0 3rd Qu.:4750 3rd Qu.:2009
## Max. :231.0 Max. :6300 Max. :2009
## NA's :2 NA's :2
data(“penguins”): Carga el set de datos penguins del paquete palmerpenguins.
View(penguins): Abre la tabla completa de los pingüinos en una nueva pestaña (similar a una hoja de cálculo).
head(penguins): Muestra las primeras 6 filas del conjunto de datos. Es una forma rápida de ver cómo lucen los datos sin tener que ver la tabla entera.
str(penguins): Muestra la estructura (structure) del data frame. Te dice cuántas observaciones (filas) y variables (columnas) hay, y qué tipo de dato es cada columna (int para enteros, num para números con decimales, Factor para categorías como “male” o “female”).
summary(penguins): Genera un resumen estadístico para cada columna. Para columnas numéricas, te da el mínimo, máximo, media, mediana y cuartiles. Para columnas categóricas (Factor), te cuenta cuántas veces aparece cada categoría. ## revisión de tipo de variables
## tibble [344 × 8] (S3: tbl_df/tbl/data.frame)
## $ species : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ island : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ bill_length_mm : num [1:344] 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
## $ bill_depth_mm : num [1:344] 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
## $ flipper_length_mm: int [1:344] 181 186 195 NA 193 190 181 195 193 190 ...
## $ body_mass_g : int [1:344] 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
## $ sex : Factor w/ 2 levels "female","male": 2 1 1 NA 1 2 1 2 NA NA ...
## $ year : int [1:344] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
str(penguins): Es la misma función de antes, útil para recordar los tipos de datos.
as.numeric(penguins$sex): Es un comentario que sirve como ejemplo. Las funciones que empiezan con as. (como as.numeric(), as.character(), as.factor()) se usan para convertir una columna de un tipo a otro. En este ejemplo, se muestra cómo se intentaría convertir la columna sex a un formato numérico (aunque no se ejecuta por el #). ## cambiar a otra tipo de variable
## species island bill_length_mm bill_depth_mm
## Adelie :152 Biscoe :168 Min. :32.10 Min. :13.10
## Chinstrap: 68 Dream :124 1st Qu.:39.23 1st Qu.:15.60
## Gentoo :124 Torgersen: 52 Median :44.45 Median :17.30
## Mean :43.92 Mean :17.15
## 3rd Qu.:48.50 3rd Qu.:18.70
## Max. :59.60 Max. :21.50
## NA's :2 NA's :2
## flipper_length_mm body_mass_g sex year
## Min. :172.0 Min. :2700 female:165 Min. :2007
## 1st Qu.:190.0 1st Qu.:3550 male :168 1st Qu.:2007
## Median :197.0 Median :4050 NA's : 11 Median :2008
## Mean :200.9 Mean :4202 Mean :2008
## 3rd Qu.:213.0 3rd Qu.:4750 3rd Qu.:2009
## Max. :231.0 Max. :6300 Max. :2009
## NA's :2 NA's :2
ancho<-(penguins$bill_depth_mm)
largo<-(penguins$bill_length_mm)
anchoylargo<-data.frame(ancho,largo)ancho <- (penguins$bill_depth_mm): Selecciona la columna bill_depth_mm (profundidad del pico) de la tabla penguins y la guarda en un nuevo vector llamado ancho.
largo <- (penguins$bill_length_mm): Hace lo mismo con la columna bill_length_mm (largo del pico) y la guarda en el vector largo.
anchoylargo <- data.frame(ancho, largo): Crea una nueva tabla (un data frame) llamada anchoylargo que contiene únicamente las dos columnas que acabas de crear.
A diferencia de cor(), que solo da el número, cor.test() realiza una prueba estadística completa.
##
## Pearson's product-moment correlation
##
## data: ancho and largo
## t = -4.4591, df = 340, p-value = 1.12e-05
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.3328072 -0.1323004
## sample estimates:
## cor
## -0.2350529
cor.test(ancho, largo): Realiza una prueba de correlación entre las variables ancho y largo. El resultado te dará no solo el coeficiente de correlación, sino también información importante como el p-value, que te ayuda a determinar si la correlación observada es estadísticamente significativa. ## Creación de una Nueva Variable (Columna)
penguins$BMI <- …: Esta sintaxis crea una nueva columna llamada BMI dentro de la tabla penguins.
penguins\(body_mass_g / penguins\)flipper_length_mm * 10: Esta es la operación que se realiza para cada fila. Divide la masa corporal (body_mass_g) entre la longitud de la aleta (flipper_length_mm) y multiplica el resultado por 10 para calcular el valor de la nueva columna BMI.
Los datos del mundo real a menudo están incompletos. Este código es una forma muy eficiente de saber cuántas filas tienen al menos un valor NA (dato faltante).
## [1] 11
complete.cases(penguins): Esta función revisa cada fila de la tabla penguins. Devuelve TRUE si la fila está completa (sin NA) y FALSE si tiene al menos un NA.
!: El signo de exclamación es un operador de negación. Invierte los TRUE y FALSE. Así, !complete.cases(penguins) devuelve TRUE para las filas incompletas (las que tienen NA).
sum(…): R trata TRUE como el número 1 y FALSE como el 0. Al sumar esta lista de TRUE y FALSE, el resultado es simplemente el conteo total de filas que tienen datos faltantes.
El paso final y muy común es crear una nueva versión de tu tabla eliminando todas las filas que tenían datos faltantes.
penguins[…]: De nuevo, usamos los corchetes para filtrar la tabla penguins.
complete.cases(penguins): Como antes, esto genera la lista de TRUE para las filas completas y FALSE para las incompletas.
penguins[…, ]: Al poner esa lista antes de la coma, le dices a R: “Quédate solo con las filas donde el resultado fue TRUE”. La coma al final significa “y para esas filas, quédate con todas las columnas”.
penguins_clean <- …: El resultado, que es la tabla penguins sin ninguna fila que contenga NA, se guarda en un nuevo objeto llamado penguins_clean.