En este apartado se cargara los paquetes, para la lectura de archivos, los cuales
Para leer archivos ODS (OpenDocument Spreadsheet) en R, puedes se utiliza la biblioteca readODS. Las extension de los archivos a leer son “.ods”. A continuacion se muestra la instalacion de la libreria, el cual se hace por unica vez. Luego se usa el comando library con el nombre de la libreria, para cargar la libraria para usarla:
## Warning: package 'readODS' was built under R version 4.3.2
## Warning: package 'readxl' was built under R version 4.3.2
Para leer y escribir archivos Excel en R, puedes utilizar la biblioteca openxlsx. Las extension de los archivos a leer son “.xls” y “.xlsx”. A continuacion se muestra la instalacion de la libreria, el cual se hace por unica vez. Luego se usa el comando library con el nombre de la libreria, para cargar la libraria para usarla:
# Instalar la biblioteca openxlsx
install.packages("openxlsx",repos = "https://cloud.r-project.org/")## Warning: package 'openxlsx' was built under R version 4.3.2
Para leer y escribir datos en varios formatos de archivo en R, incluidos CSV, Excel, SPSS, Stata, y más, se puede utilizar la biblioteca rio. Esta biblioteca es útil porque simplifica el proceso de lectura y escritura de datos en diferentes formatos, al proporcionar una función (import()) que automáticamente detecta el formato del archivo y carga los datos de manera adecuada.
Primero, necesitas instalar y cargar la biblioteca rio, lo cual se hace con los siguientess comandos:
# Instalar la biblioteca rio si aún no está instalada
install.packages("rio",repos = "https://cloud.r-project.org/")## Warning: package 'rio' was built under R version 4.3.2
Para la descarga de los archivos se hara de la siguiente direccion:
En el apartado de datos, se buscara las siguiente data, la cual se tendra de descargar:
Empezaremos a leer el archivo con extension .ods, para lo cual usamos el comando read_ods, con la ruta del archivo a leer. Luego de la lectura se mostrara los primero 10 valores de la tabla con el comando head. Para esto previamente esta cargado la libreria readODS
# Especificar la ruta del archivo ODS
ruta_archivo <-"C:/Users/GL2/Downloads/R IMCA/TAREA 2/Pielescuero/Pielescuero.ods"
# Leer el archivo ODS
datos_ods<-read_ods(ruta_archivo)## tibble [173 × 5] (S3: tbl_df/tbl/data.frame)
## $ Exportacion : num [1:173] 1 2 1 1 1 1 1 1 1 2 ...
## $ Tamano : num [1:173] 1 1 1 1 1 1 1 1 1 1 ...
## $ Financiacion: num [1:173] 2 2 2 2 2 2 2 2 2 2 ...
## $ Zona : num [1:173] 2 3 2 2 1 3 3 3 1 1 ...
## $ Actividad : num [1:173] 4 3 3 3 3 3 3 3 4 3 ...
Ahora leemos el archivo con extension .xlsx, para lo cual usamos el comando read_excel, con la ruta del archivo a leer. Luego de la lectura se mostrara los primero 10 valores de la tabla con el comando head. Para esto previamente esta cargado la libreria readxl
# Especificar la ruta del archivo Excel
ruta_archivo <- "C:/Users/GL2/Downloads/R IMCA/TAREA 2/Pielescuero/Pielescuero.xlsx"
# Leer el archivo Excel
datos_excel <- read_excel(ruta_archivo)## tibble [173 × 5] (S3: tbl_df/tbl/data.frame)
## $ Exportacion : num [1:173] 1 2 1 1 1 1 1 1 1 2 ...
## $ Tamano : num [1:173] 1 1 1 1 1 1 1 1 1 1 ...
## $ Financiacion: num [1:173] 2 2 2 2 2 2 2 2 2 2 ...
## $ Zona : num [1:173] 2 3 2 2 1 3 3 3 1 1 ...
## $ Actividad : num [1:173] 4 3 3 3 3 3 3 3 4 3 ...
Ahora leemos el archivo con extension .csv, para lo cual usamos el comando read_excel, con la ruta del archivo a leer. Luego de la lectura se mostrara los primero 10 valores de la tabla con el comando head. Para esto previamente esta cargado la libreria readxl
# Leer datos desde un archivo CSV
datos_csv <- import("C:/Users/GL2/Downloads/R IMCA/TAREA 2/Pielescuero/Pielescuero.csv")## 'data.frame': 173 obs. of 5 variables:
## $ Exportacion : int 1 2 1 1 1 1 1 1 1 2 ...
## $ Tamano : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Financiacion: int 2 2 2 2 2 2 2 2 2 2 ...
## $ Zona : int 2 3 2 2 1 3 3 3 1 1 ...
## $ Actividad : int 4 3 3 3 3 3 3 3 4 3 ...
# Leer un archivo CSV y almacenar los datos en un objeto llamado 'datos'
datos <- read.csv("C:/Users/GL2/Downloads/R IMCA/TAREA 2/Pielescuero/Pielescuero.csv")
# Verificar la estructura de los datos
str(datos)## 'data.frame': 173 obs. of 5 variables:
## $ Exportacion : int 1 2 1 1 1 1 1 1 1 2 ...
## $ Tamano : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Financiacion: int 2 2 2 2 2 2 2 2 2 2 ...
## $ Zona : int 2 3 2 2 1 3 3 3 1 1 ...
## $ Actividad : int 4 3 3 3 3 3 3 3 4 3 ...
En R, una matriz es una estructura de datos bidimensional que contiene elementos del mismo tipo. Puedes pensar en una matriz como una colección rectangular de elementos organizados en filas y columnas.
Para la creacion de una matriz de nrow filas y ncol columnas, se usara el comando: \[matrix(secuencia, nrow=... , ncol=... )\]
# Crear una matriz de 3 filas y 2 columnas, con una secuencia de 1 al 6
matriz <- matrix(1:6, nrow = 3, ncol = 2)## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
A continuacion se presenta un ejemplo de generacion de una matrix de dimension 3x4, que toma valores aleatorios entre 1 a 12, NO pudiendo tomar valores repetidos.
# Especificando las dimensiones de la matriz
filas <- 3
columnas <- 4
# Crear una matriz de dimensiones filas x columnas con valores aleatorios entre 1 y 12
matriz_azar <- matrix(sample(1:12, filas * columnas, replace = FALSE), nrow = filas, ncol = columnas)## [,1] [,2] [,3] [,4]
## [1,] 10 2 7 6
## [2,] 11 9 8 5
## [3,] 4 3 12 1
Ahora se creara dos matrices A y B, de igual numero de fila y columna. Para nuestro caso sera de dimension 5x5
# Especificando las dimensiones de la matriz
filas <- 5
columnas <- 5
# Crea matriz de dimensiones filasxcolumnas con valores aleatorios entre 1 y filas*columnas
A <- matrix(sample(1:(filas*columnas), filas * columnas, replace = FALSE), nrow = filas, ncol = columnas)
B <- matrix(sample(1:(filas*columnas), filas * columnas, replace = FALSE), nrow = filas, ncol = columnas)## [,1] [,2] [,3] [,4] [,5]
## [1,] 3 20 15 6 2
## [2,] 24 17 7 25 11
## [3,] 22 19 9 16 13
## [4,] 5 12 18 4 1
## [5,] 10 21 14 8 23
## [,1] [,2] [,3] [,4] [,5]
## [1,] 20 3 13 5 25
## [2,] 8 9 10 15 22
## [3,] 12 7 21 11 2
## [4,] 1 16 19 23 18
## [5,] 17 6 24 4 14
Ahora se procedera ha hacer las operaciones basicas entre la matrices A y B.
## [,1] [,2] [,3] [,4] [,5]
## [1,] 23 23 28 11 27
## [2,] 32 26 17 40 33
## [3,] 34 26 30 27 15
## [4,] 6 28 37 27 19
## [5,] 27 27 38 12 37
## [,1] [,2] [,3] [,4] [,5]
## [1,] -17 17 2 1 -23
## [2,] 16 8 -3 10 -11
## [3,] 10 12 -12 5 11
## [4,] 4 -4 -1 -19 -17
## [5,] -7 15 -10 4 9
## [,1] [,2] [,3] [,4] [,5]
## [1,] 60 60 195 30 50
## [2,] 192 153 70 375 242
## [3,] 264 133 189 176 26
## [4,] 5 192 342 92 18
## [5,] 170 126 336 32 322
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.1500000 6.666667 1.1538462 1.200000 0.08000000
## [2,] 3.0000000 1.888889 0.7000000 1.666667 0.50000000
## [3,] 1.8333333 2.714286 0.4285714 1.454545 6.50000000
## [4,] 5.0000000 0.750000 0.9473684 0.173913 0.05555556
## [5,] 0.5882353 3.500000 0.5833333 2.000000 1.64285714
## [,1] [,2] [,3] [,4] [,5]
## [1,] 3.486784e+09 8.000000e+03 1.946195e+15 7.776000e+03 3.355443e+07
## [2,] 1.100753e+11 1.185879e+11 2.824752e+08 9.313226e+20 8.140275e+22
## [3,] 1.285500e+16 8.938717e+08 1.094190e+20 1.759219e+13 1.690000e+02
## [4,] 5.000000e+00 1.848843e+17 7.082353e+23 7.036874e+13 1.000000e+00
## [5,] 1.000000e+17 8.576612e+07 3.214200e+27 4.096000e+03 1.159284e+19
Ahora se procede a crear dos matrices A y B, pero con diferentes fila y columnas. La dimension de la matriz A sera de 3x5 y la dimension de la matriz B sera de 5x3
# Creacion de las matrices A y B
A <- matrix(sample(1:(3*5), 3*5, replace = FALSE), nrow = 3, ncol = 5)
B <- matrix(sample(1:(5*3), 5*3, replace = FALSE), nrow = 5, ncol = 3)## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 13 8 3 7
## [2,] 11 15 14 9 4
## [3,] 6 12 2 10 5
## [,1] [,2] [,3]
## [1,] 6 14 3
## [2,] 5 8 7
## [3,] 1 12 13
## [4,] 15 9 11
## [5,] 2 4 10
Ahora se procedera ha hacer las operaciones basicas entre la matrices A y B. Ahora veremos que no se puede hacer estas operaciones.
Ahora se procede a crear dos matrices A y B.La dimension de la matriz A sera de 3x5 y la dimension de la matriz B sera de 5x3, y se procedera a ejecutar la multiplicacion clasica de metrices.
# Creacion de las matrices A y B
A <- matrix(sample(1:(3*5), 3*5, replace = FALSE), nrow = 3, ncol = 5)
B <- matrix(sample(1:(5*3), 5*3, replace = FALSE), nrow = 5, ncol = 3)## [,1] [,2] [,3]
## [1,] 387 209 306
## [2,] 491 276 245
## [3,] 414 280 224
Ahora se procede a crear dos matrices A de dimension 3x5, luego se mostrara la matriz transpuesta, usando el comando t(A).
## [,1] [,2] [,3] [,4] [,5]
## [1,] 6 1 2 8 10
## [2,] 12 13 7 3 4
## [3,] 9 11 5 14 15
## [,1] [,2] [,3]
## [1,] 6 12 9
## [2,] 1 13 11
## [3,] 2 7 5
## [4,] 8 3 14
## [5,] 10 4 15
Para crear una matriz aleatoria en R, puedes utilizar la función matrix() junto con la función runif() para generar números aleatorios. La funcion de runif() genera números aleatorios distribuidos uniformemente en el intervalo [0, 1]. Para este ejemplo se crearan la matriz A y B de dimensiones 3x5
# Definir las dimensiones de la matriz
filas <- 3
columnas <- 5
# Generar una matriz aleatoria de dimensiones filas x columnas
A<- matrix(runif(filas * columnas), nrow = filas, ncol = columnas)
B<- matrix(runif(filas * columnas), nrow = filas, ncol = columnas)## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.4282841 0.1381348 0.3859572 0.8578896 0.64570904
## [2,] 0.6144855 0.4106445 0.6010868 0.8621028 0.55355383
## [3,] 0.8616574 0.5234380 0.9699642 0.2704537 0.01046408
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.002645561 0.2430308 0.9224328 0.4829682 0.0179105
## [2,] 0.669810969 0.4090247 0.1488248 0.2243316 0.1478095
## [3,] 0.564820147 0.4497742 0.9438986 0.1549531 0.1520368
Ahora con las matrices A y B se haran las operaciones: +, -, * , / y ^.
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.4309296 0.3811656 1.3083900 1.3408578 0.6636195
## [2,] 1.2842965 0.8196692 0.7499117 1.0864345 0.7013634
## [3,] 1.4264775 0.9732122 1.9138628 0.4254069 0.1625009
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.42563850 -0.10489606 -0.53647561 0.3749213 0.6277985
## [2,] -0.05532547 0.00161978 0.45226199 0.6377712 0.4057443
## [3,] 0.29683723 0.07366376 0.02606564 0.1155006 -0.1415727
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.001133052 0.0335710 0.35601960 0.41433342 0.011564972
## [2,] 0.411589130 0.1679638 0.08945665 0.19339694 0.081820531
## [3,] 0.486681449 0.2354289 0.91554785 0.04190765 0.001590926
## [,1] [,2] [,3] [,4] [,5]
## [1,] 161.8877752 0.5683837 0.4184123 1.776286 36.05198119
## [2,] 0.9174014 1.0039601 4.0388878 3.842984 3.74504836
## [3,] 1.5255429 1.1637794 1.0276149 1.745390 0.06882601
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.9977592 0.6181119 0.4155374 0.9286445 0.9921964
## [2,] 0.7216769 0.6948612 0.9270440 0.9672614 0.9162977
## [3,] 0.9193390 0.7473995 0.9716251 0.8165843 0.4999445
Ahora con las matrices aleatorias A y B se calcularan A%%B , t(A)%%B , A%%t(B) , B%%t(A) , **t(B)%*%A**.
#Multiplicacion de matrices clasica, no ase puede hacer esta operacion por la
#dimension no es correcta
#A%*%B## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.8994036 0.7429773 1.2998312 0.4782127 0.22950121
## [2,] 0.5710680 0.4369637 0.6826065 0.2399436 0.14275306
## [3,] 0.9514910 0.7759238 1.3610241 0.4715469 0.24322928
## [4,] 0.7324732 0.6827581 1.1749287 0.6496380 0.18391115
## [5,] 0.3783950 0.3880509 0.6878828 0.4376580 0.09497643
## [,1] [,2] [,3]
## [1,] 0.816622 0.6887036 0.8994416
## [2,] 1.082170 0.9442270 1.3168822
## [3,] 1.155026 0.9978194 1.6811568
## [,1] [,2] [,3]
## [1,] 0.8166220 1.082170 1.1550259
## [2,] 0.6887036 0.944227 0.9978194
## [3,] 0.8994416 1.316882 1.6811568
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.8994036 0.5710680 0.9514910 0.7324732 0.37839502
## [2,] 0.7429773 0.4369637 0.7759238 0.6827581 0.38805087
## [3,] 1.2998312 0.6826065 1.3610241 1.1749287 0.68788280
## [4,] 0.4782127 0.2399436 0.4715469 0.6496380 0.43765805
## [5,] 0.2295012 0.1427531 0.2432293 0.1839112 0.09497643
Para crear una matriz aleatoria en R, puedes utilizar la función matrix() junto con la función runif() para generar números aleatorios. La funcion de runif() genera números aleatorios distribuidos uniformemente en el intervalo [0, 1]. Para este ejemplo se crearan la matriz C y D de dimensiones 2x4
# Definir las dimensiones de la matriz
filas <- 2
columnas <- 4
# Generar una matriz aleatoria de dimensiones filas x columnas
C<- matrix(runif(filas * columnas), nrow = filas, ncol = columnas)
D<- matrix(runif(filas * columnas), nrow = filas, ncol = columnas)## [,1] [,2] [,3] [,4]
## [1,] 0.01350275 0.8895722 0.3468937 0.7362559
## [2,] 0.04487313 0.4836048 0.5078876 0.1370228
## [,1] [,2] [,3] [,4]
## [1,] 0.7524368 0.61386972 0.2953955 0.06604262
## [2,] 0.8624734 0.05728807 0.4364830 0.45756792
Ahora con las matrices aleatorias C y D se calcularan t(C)%\(*\)%D, C%\(*\)%t(D), C%\(*\)%t(D), t(C)%\(*\)%D.
## [,1] [,2] [,3] [,4]
## [1,] 0.04886184 0.01085962 0.02357501 0.02142426
## [2,] 1.08644312 0.57378622 0.47386088 0.28003172
## [3,] 0.69905508 0.24204341 0.32415512 0.25530283
## [4,] 0.67216453 0.45981499 0.27729478 0.11132150
## [,1] [,2]
## [1,] 0.7073365 0.5509079
## [2,] 0.4897116 0.3507882
## [,1] [,2]
## [1,] 0.7073365 0.5509079
## [2,] 0.4897116 0.3507882
## [,1] [,2] [,3] [,4]
## [1,] 0.04886184 0.01085962 0.02357501 0.02142426
## [2,] 1.08644312 0.57378622 0.47386088 0.28003172
## [3,] 0.69905508 0.24204341 0.32415512 0.25530283
## [4,] 0.67216453 0.45981499 0.27729478 0.11132150
Ahora extraeremos de A una submatriz F de 2 filas y 3 columnas utilizando la escritura A[1:2,1:3]
## [,1] [,2] [,3]
## [1,] 0.4282841 0.1381348 0.3859572
## [2,] 0.6144855 0.4106445 0.6010868
Como la dimension de C es 2, 4 y la dimension de A es 3, 5, asi cualquier combinacion de transpuestas, no tiene la dimension correcta para la multiplicacion clasica para C%\(*\)%A, t(C)%\(*\)%A, C%\(*\)%t(A), t(C)%\(*\)%t(A).
Como la dimension de la matriz C es 2, 4 y la dimension de la matriz F es 2, 3, asi la unica forma de multiplicar el producto de filaa por columna es t(C)%*%F.