Apuntes de Programacion en R
Apuntes de Programacion en R
DE
PROGRAMACIÓN
práctica
para entender
.as bondades del R
APUNTES DE PROGRAMACIÓN EN R
F.M.N
Capítulo 1
Instalación
1 Descargar R 7
1.1 Windows 2
1.2 Mac 4
1.3 Distribuciones Linux 4
Debían 4
RedHat 5
Opensuse 5
Ubuntu 5
2 Descargar IDE ó
3 Softwares Externos 6
Capítulo 2
Objetos en R
1 Creando y asignando valores 9
1.1 Tipos de datos 10
1.2 Clases de objeto 12
1.3 Ordenar datos 23
1.4 Valores aleatorios 23
2 Modificar 25
2.1 índice para objetos de una dimensión 25
2.2 índice para objetos de dos dimensiones 27
2.3 Modificar un [Link] y vectores 28
iii
IV
ÍNDICE GENERAL
3 Eliminar 32
3.1 Objeto 32
3.2 Un elemento o columna 32
[Link] 33
Capítulo 3
Repetidores y Condicionales
1 Repetidor 35
1.1 For 35
1.2 While 38
1.3 Repeat 39
2 Condicional 40
2.1 If 47
Modo Reducido 41
Modo Completo 42
2.2 Switch 44
2.3 Which 46
Capítulo 4
Atrapando Errores
1 try 49
2 tryCatch 50
Capítulo 5
Funciones en R
1 Funciones sin argumentos 53
2 Funciones con argumentos 56
Capítulo 6
Otras Operaciones
1 Operador Pipe 61
2 Caracteres 64
IV
INDICE GENERAL
3 Gráficos 72
3.1 Wordcloud 72
3.2 Plotly 74
3.3 GGplot 81
Annotate 89
gráfico torta 91
gráfico de barras para escala likert 93
temas 97
101
Importando y Exportando ficheros
1 CSV 103
1.1 Importar 104
interna 104
readr 107
csvread 109
1.2 Exportar 712
interna 7 72
readr 113
[Link] 115
2 SPSS 716
2.1 Importar 116
foreign 716
haven 718
2.2 Exportar 120
foreign 120
haven 722
3 Excel 724
3.1 Importar 724
readxl 724
3.2 Exportar 126
writexl 126
129
Base de Datos
1 MYSQL 729
1.1 Conectar 132
v
VI
ÍNDICE GENERAL
Capítulo 9
Creando Reportes
1 MS Word 747
2 Markdown 747
2.1 Texto Normal 150
secciones o encabezados 150
estilos en caracteres 151
listas 152
notas al pie de página 153
2.2 texto matemático 754
2.3 código 754
2.4 figuras 156
locales 156
creadas 757
2.5 tablas 158
crear 158
librería 759
2.6 bibliografía 160
3 Látex 163
3.1 Textos 166
Párrafos 167
Alinear texto 168
Espacios 168
Listas 169
3.2 Ecuaciones 772
3.3 Tablas 178
Mediante librerías 178
Manualmente 183
3.4 Figuras 192
3.5 Bibliografías 199
Capítulo 10
207 Referencias
1 Bibliografía 207
vi
o
h-5
£
H
'M
Oh
<
O
Instalación
1.1 Descargar R
R es un lenguaje de programación dedicado al análisis estadístico y que esta
disponible en múltiples sistemas operativos como son Windows, macOS, Linux y
hay un desarrollo para android pero que a la actualidad aún no es oficial. Dado el
caso de ser un lenguaje de programación, la comunidad ha decidido incluir en su
instalador una interfaz llamada “R Commander” que es el estándar pero que a
su vez esta pensado ejecutarse en todo tipos de computadoras sin restricción de
requisitos! procesador, memoria ram y otros). Debido a su gran fama grupos de
desarrolladores han creado IDE’S (entorno de desarrollo integrado) con el fin de
que programar en R sea más sencillo y claro que hay otros que se han enfocado en
GUI (interfaz gráfica de usuario) centrándose en la creación de menús interactivos
similares a IBM SPSS. Dentro de los mas conocidos nos encontramos con:
Rstudio IDE muy recomendado por la comunidad de R pero que para su funcio¬
namiento requiere un procesador dual core como mínimo.
1
2
CAPITULO 1. INSTALACION
<111 Windows
Versión Recomendada
Download R 4.0.0 for Windows1»84 meeabvtes. 32/64 bit)
Installation and other instructions
New features in thís versión
Versión Actual Parcheada
If you want to double-check that the package you have downloaded matches the package distributed by/CRAN, you can compare the md5sum of the .exe to the
fingerprint on the master server. You will need a versión of md5sum for Windows: both graphical anefcommand fine versions are available.
Other builds
Note to webmasters: A stable link which will redirect to the current Windows binary release is
<CRAN MIRROR>/bin/windows/base/[Link].
Las otras dos opciones solo son únicamente para probar como va el desarrollo
de R, si usted esta en proyectos grandes y no quiere tener errores de software
entonces solo use la versión recomendada por la comunidad. Una vez descargado
ejecute y haga lo siguiente: “elija las opciones y de en el botón siguiente”
2
3
1. DESCARGAR R
X Información
Es importante que lea la siguiente informadón antes de continuar.
Norsk The licenses for most software are designed to take away your
ffeedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your ffeedom to share and change ffee
software-to make sure the software is ffee for all its users. This
General Public License applies to most of the Free Software
Para continuar, haga dic en Siguiente. Si desea selecbonar una carpeta distinta, haga
dic en Examinar.
R Examinar...
Por favor, espeafique si o no y luego haga dic en Siguiente. Selecaone las tareas adiaonales que desea que se realicen durante la instalaaón de R
for Windows 4.0.0 y haga dic en Siguiente.
Os
Accesos directos adiaonales:
® No
0 Crear un acceso directo en el escritorio
Registro de entradas:
3
CAPITULO 1. INSTALACION
2.1.2 Mac
La última versión de R únicamente se pueden instalar si cuentas con macOS
10.13(Sierra) y versión superior, Si dispones de versiones de macOS inferiores
instala las versiones inferiores de R.
Si posees macOS 10.13, ingrese en esta url directamente a la descarga:
[Link]
O si tienes una versión de macOS inferior ingrese a:
[Link]
y elija la versión que más se adapta a la versión de su macOS.
Debían
4
1. DESCARGAR R
5
RedHat
La instalación en Redhat solo requiere de pocos comandos
como
yum update
yum install epel-release
yum install R
Opensuse
La instalación de R se hace a través de su YaST2 ingresando
en
Main menú -> System -> YaST -> Software ->
Software Management
Ubuntu
Hay dos formas de instalar en ubuntu el software R, una
de ellas es mediante Ubuntu Software y la otra depende de la
consola.
5
CAPÍTULO 1. INSTALACIÓN
Importante
Atom Rbox
Achitect
Jupyter
Vim Nvim-R
6
3. SOFTWARES EXTERNOS
%windir%\System32\rundí[Link] [Link],EditEnvironmentVariables
Esto abrirá una pequeña ventana , enfoquese en Path y haga clic en el botón
Editar. Al final de ese textbox agrega el directorio
7
Objetos en R
< -
variable <- c( )
contenido
o
elementos
9
10 CAPITULO 2. OBJETOS EN R
Claro que al nombrar usted puede toparse con nombres de funciones internas
como “sd, var, cor, arima, pf y entre otros”, si le ha sucedido entonces se habrá
dado cuenta que el objeto creado funciona con normalidad pero ello reemplaza
a la función y para retornar a su normalidad solo use rm(nombre_objeto). A
continuación se presentará algunos casos en donde genera error al nombrar
objetos.
OBJETOS
1/ Validos X Inválidos
datos<- c () %datos <- c ()
datos 98 <- c () datos% <—c ()
datos_l <- c () 98datos <- c ()
[Link] <- c () _datos <- c ()
1 No es específicamente un error(.),
sino que no se puede crear el objeto
por falta de referencia.
Valores Tipo ¡
a < - 14 numérico
a < - FALSE booleano
a < - “b” carácter
a < - 6L entero “usar L alJinal”
a < - l+6i complejo
Para tratar de saber que tipo de objeto es el que se ha creado, se usará las
siguientes funciones:
10
11
1. CREANDO Y ASIGNANDO VALORES
Función Especificación
class() Categoriza en forma general el objeto y también sirve para
interpolar 1
typeof() Determina el tipo interno del objeto, ejem “NULL,double y
otros”
length() Retorna la longitud de datos en un objeto
attributes () Sirve para verificar si el objeto tiene algún metadato,objeto
complejo
mode() Similar a typeof pero su clasificación es distinta
1 Específicamente puede hacer que class (x) <- c ("ob j "), agrega un
atributo.
11
12
CAPITULO 2. OBJETOS EN R
Clase Especificación ¡1
vectorO Crea un vector numérico.
factor() Usado para codificar un vector en categorías o
escalas.
listo Crea una lista de datos por separado.
matrix() Crea una matriznxm.
raw() Crea un vector crudo que almacena longitudes
fijas de bytes.
[Link] ame Q1 Acepta todo tipo de datos y es muy usado.
1 esta clase es muy usado con knitr para crear tablas tipo APA con la librería kable, para saber
su funcionamiento escribir en consola lo siguiente ?[Link] , intentar con las otras clases lo
mismo ?clase , cambiar clase por “vector,factor,list y otros”
12
1. CREANDO Y ASIGNANDO VALORES
13
> liker
13
14
CAPÍTULO 2. OBJETOS EN R
>
Nada
summary(liker)
Satisfecho
#
Poco
—> cantidad
Satisfecho Satisfecho
L.1 Muy Satisfecho
14 4 6 12
Error en levels
Error en labels
En (JlJ) indica que las escalas (1 a 4) de levels debe ser igual a labels . Lo
14
1. CREANDO Y ASIGNANDO VALORES
15
data tos cuyos valores coincidan con le¬ 961 a62 363 a6n
a7i a72 373 a7n
véis.
asi a82 a83 asn
agí 9g3
(numeric) Numero de filas(n) que ag2 agn
nrow
tiene el vector de datos
ami 9m2 9m3 9mn
(numeric) Numero de columnas(m)
ncol
que tiene el vector de datos
15
16 CAPITULO 2. OBJETOS EN R
Warning message:
In matrix(data = 1:16, nrow = 9, ncol = 2) :
la longitud de los datos [16] no es un
submúltiplo o múltiplo del número de filas
[9] en la matriz
16
17
1. CREANDO Y ASIGNANDO VALORES
#-
#-
> dimnames(mt) <- list(
> rownames(mt) <- c("fl","f2",
c("fl","f 2","f 3"),
" f3 " )
c ("el","c2") )
> colnames(mt) <- c("cl","c2")
#-
#-—-
> mt
> mt
el c2
el c2
fl 1 4
fl 1 4
f2 2 5
f2 2 5
f3 3 6
17
18 CAPITULO 2. OBJETOS EN R
#-
# vector
> xl = c(letters[1:8; )
> x2 <- c(1:8)
# Factor
> x3 <- factor(x = c (4,2,4,1,2,1,4,4), levels = c(l:4).
labels = c ("Nada Satisfecho","Poco Satisfecho",
"Satisfecho","Muy Satisfecho") )
# Matrix
> b <- matrix(data = c(l:16),nrow = 8,ncol = 2)
18
19
1. CREANDO Y ASIGNANDO VALORES
#-
> tb <- [Link]("lb"= xl, > tb <- [Link]("Ib"= xl,
"a" = x2, "a" = x2,
"b" = x3, "b" = x3,
"c"= b, "c"= b,
[Link]=l) [Link]=5)
> tb # usar View(tb) > tb # usar View(tb)
a b c. 1 c. 2 ib a b c. 1
19
20 CAPITULO 2. OBJETOS EN R
se trata del tamaño de las filas de cada objeto, como se observa en el primer
objeto hay “length (xl) = 6” y el otro objeto existe “length (x2) = 8” significan¬
do distintas filas. Es muy importante que en [Link] se tenga los objetos
con la misma longitud de filas.
“Uso de library(tidyverse) ”
20
21
1. CREANDO Y ASIGNANDO VALORES
list(... )
Por ejemplo:
Se tratará de crear objetos de distintos tipos de clases, como son “vectores,
factor, [Link] y matrix”
#-
> xl = c(letters[1:8] )
> x2 <- c(1:8)
# Factor
> x3 <- factor(x = c(4,2,4,1,2,1,4,4), levels = c(l:4),
labels = c("Nada Satisfecho","Poco Satisfecho",
"Satisfecho", "Muy Satisfecho") )
# [Link]
> tb <- [Link]("lb"= xl, "a" = x2)
# matrix
> mt <- matrix(data= 1:9, nrow=3, ncol= 3, byrow=T)
Una vez creado los objetos “observa el último argumento que es una función”.
Entonces para combinar todo en una lista se tiene que hacer lo siguiente:
Dado que se trata de una lista con múltiples objetos incrustados, entonces
únicamente se puede ver a través de consola escribiendo lo siguiente:
21
22
CAPITULO 2. OBJETOS EN R
#-
> lista
#-
[ [1] ]
[1] 1 2 3 4 5 6 7 8
[ [2] ]
[1] Muy Satisfecho Poco Satisfecho Muy Satisfecho Nada
Satisfecho
[5] Poco Satisfecho Nada Satisfecho Muy Satisfecho Muy
Satisfecho
4 Levels : Nada Satisfecho Poco Satisfecho ... Muy Satisfecho
[ [3] ]
Ib a
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
7 g 7
8 h 8
[ [4] ]
[, 1] [,2] [, 3]
[1, ] 12 3
[2, ] 4 5 6
[3, ] 7 8 9
[ [5] ]
Nada Satisfecho Poco Satisfecho Satisfecho Muy Satisfecho
2 2 0 4
Observa el caso “[[5]]” de summary(x3) que también puede ser incluido dentro
de la clase listQ •
22
23
1. CREANDO Y ASIGNANDO VALORES
23
24 CAPITULO 2. OBJETOS EN R
#-
> tmp <- c(4,2)
> v4 <- sequence(tmp)
> v4
[1] 1 2 3 4 1 2
#-
#-
> v5 <- runif(6,l,5)
> v5
[1] 1.766615 2.726120 1.646968 1.148724 3.180554 2.160788
#-
#-
> v6 <- sample(1:20,5,replace = T)
> v6
[1] 14 12 5 17 1
24
2. MODIFICAR
25
2.2 Modificar
En las secciones anteriores se ha visto como se crea el objeto y que elementos
son permitidos para esa clase de objeto. Las siguientes secciones se hablará sobre
la edición o modificación de los elementos del objeto, para ello se ha divido en dos
secciones que consta las dimensiones de los objetos.
i mi
objeto <- c( 5, 4, 7, 8, 12, )
1 2 3 4 5
índice
> datos[1] = 12
> datos[3] = 21
> datos
[:L] 12 4 21 8 12 3
25
26 CAPITULO 2. OBJETOS EN R
2esto es un vector de datos por ejemplo c(l,2,3,4) no confundir con la función vectorQ
26
27
2. MODIFICAR
> mat
Se va a tratar de sacar todos los datos en forma diagonal, por favor prestar
atención a los indices.
Para cambiar datos solamente se necesita usar “< —”, es muy parecido al
proceso que se hizo anteriormente.
27
28 CAPITULO 2. OBJETOS EN R
m
> mat [3,3;
V
i
> mat
[,1] ,2] [,3;
[1, ] 4 0 0
[2, ] 0 3 0
[3, ] 0 0 5
Función Especificación f
cbind (df, nuevo) Agrega columnas al [Link] Nota: tener el mis¬
mo tamaño de ñlas(n).
rbind (df, nuevo) Agrega filas al [Link] Nota: tener el mismo
tamaño de columnas (m).
retorna la longitud de datos en un objeto
attributesO sirve para verificar si el objeto tiene algún meta-
dato, objeto complejo
edit(objeto) Una forma visual de modificar datos Nota: Es un
editor de datos
28
29
2. MODIFICAR
# Agregar columna
> tb < - cbind(tb,cl)
> tb
X y el
1 54 12.57 2
2 27 12.72 2
3 48 13.89 2
4 40 10.42 2
#-
# Agregar fila
> tb < - rbind(tb, f1)
> tb
X y el
1 54 12.57 2
2 27 12.72 2
3 48 13.89 2
4 40 10.42 2
5 1 1.00 12
#-
29
30 CAPITULO 2. OBJETOS EN R
importancia.
r
> [Link]("[Link]")
> library([Link])
Se intentará crear una tabla mixta con el objetivo de tomarlo como referencia.
30
2. MODIFICAR
31
Para solo ver algunas columnas se ne¬ La función que permite ordenar colum¬
cesita ya sea sus nombres como (xy í) o nas es “setorder(tabla,-a,b)” por (-,+) es
el número (1 y 3). (descendente, ascendente).
31
32
CAPITULO 2. OBJETOS EN R
3.3 Eliminar
1.3.1 Objeto
Si se tiene un objeto similar “variable” y se quiere eliminar por completo
del sistema con el objetivo de reducir espacio en memoria entonces seria muy
oportuno usar la función rm() claro que para eliminar múltiples objetos entonces
usar coma.
> rm(variable)
> variable
Error: objeto 'variable' no encontrado
># -> eliminar múltiples objetos <-
> rm(a, b, c, mat, df)
> exists("a");exists("b");exists("c");exists("mat");exists("df")
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE
32
3. ELIMINAR
33
[Link] ame
I
Es bueno recordar que esta acción no es posible en dataframe:
> dt = [Link](
"hl"=c(runif(5,40,64)),
"h2"=c(sample(2:25,size = 5)
hi hi
|1 50.43018 15 |
hl h2
3 46.13610 16
2 53.59845 18 |4 61.00323 H|
5 55.03759 19
3 46.13610 16
5 55.03759 19
> dt <- dt[-c(l,4),] # almacenar en dt
33
34
CAPITULO 2. OBJETOS EN R
34
Repetidores y Condicionales
1.1 Repetidor
1.1.1 For
El repetidor For crea un ciclo de elementos de un objeto establecido for (va¬
riable in obj). El in indica de que objeto (obj) se extraerá los elementos y los
almacena en variable.
35
36 CAPITULO 3. REPETIDORES Y CONDICIONALES
Tips en código
;i 2 3| ;i 2 3j
X y z
1 a 6 18 63
2 b 9 14 58
3 c 13 5 45
4 d 8 13 43
5 e 11 11 46
36
37
1. REPETIDOR
m el primer for genera números de 1 hasta n filas y el segundo for genera desde
1 hasta m columnas:
i
Q Aquí solamente extrae los nombres por filas y seguramente ya los conoces.
D En esta parte el for extrae todos los elementos del objeto dt, no confundir con
los otros que solamente generan el índice. Es importante aclarar que genera
una longitud > 1 y no es posible usar if en ello.
37
38 CAPITULO 3. REPETIDORES Y CONDICIONALES
2.1.2 While
La función while es un repetidor con una condición que mientras sea cierta
entonces se ejecutará todo el pedazo de código que se encuentre dentro, por
ejemplo tengo un objeto
después creo un while con la condición mientras obj sea menor de 10 entonces
se ejecutará el otro código donde imprima “hola mundo”, ten cuidado con este
tipo de condiciones que hace repeticiones infinitas dado a que siempre retornara
un TRUE
> a = 1
> while(a < 8){
print( paste("hola", a, sep = )
a = a+1
}
Retornará “hola— >i” donde ¿e{l, • • • 7}, así que se repetirá siete veces por el
motivo de la condición.
38
39
1. REPETIDOR
3.1.3 Repeat
Es un repetidor sin condiciones, así que se tiene que colocar una condición
para que finalize y se usará un break para que finalize repeat{ }, a tener mucho
cuidado al usar esta función
39
40 CAPITULO 3. REPETIDORES Y CONDICIONALES
2.2 Condicional
Antes de empezar, usted debe conocer los operadores lógicos en su totalidad
y para ello se ha preparado las siguientes tablas donde indican cuales son los
símbolos y como funcionan
for (i in a){
for (j in b){
if( ){
}
}
}
p q & 1 xor(p,q)
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE TRUE
FALSE TRUE FALSE TRUE TRUE
FALSE FALSE FALSE FALSE FALSE
1 por ejemplo a = c(l:8) y uso la siguiente condición a>2 & a<8 esto retorna ocho valo¬
res lógicos. Pero si hago lo siguiente a>2 && a<8, entonces retorna un solo valor lógico.
40
41
2. CONDICIONAL
Verificar Convertir
[Link]([Link]) as. vector ([Link])
[Link](x) [Link](x)
[Link](x) [Link](x)
[Link](x) [Link](x)
[Link](x) [Link](x)
is. data, frame (x) [Link](x, [Link])
[Link](x)
[Link](x)
[Link](x) [Link](x)
is. numeric .Date (x) as .Date. character(x)
1.2.1 If
En esta sección la sentencia “if’ cuestiona si se ejecuta o no una parte del
código que esta dentro de llaves “{ • • • }” sin embargo en el lenguaje R nos ofrece
dos formas de usar la sentencia if.
Modo Reducido
Contamos con una función sencilla llamada
ifelse(comprobar,retornal,retorna2)
en comprobar se tendrá que colocar el (objeto más la condición) que se desea
veriñcar y si esto es verdad(TRUE ) entonces retorna 1 caso contrario retorna2.
Por ejemplo:
> a = c(runif(5,40,64))
[1] 60.36799 52.96228 48.25127 42.66303 44.14928
> ifelse(a>45,"si","no")
[1] "si" "si" "si" "no" "no"
41
42
CAPITULO 3. REPETIDORES Y CONDICIONALES
Si quieres que sea mas eficiente con respecto a velocidad de procesado, enton¬
ces usa lo siguiente:
Funciona igual que el otro con la diferencia que en si y no tiene que ser el mismo
tipo de datos y la misma longitud. En missing hace referencia a valores nulos (NA)
y permite cambiarlos por otros valores como es el caso de 3 (no compara).
> require(dplyr)
> a = c (10, 5, 9, 5,NA) # n=5
> b = c(2,4,6,8,10) # n=5 --> numeric
> c = c(l,3,5,7,9) # n=5 --> numeric
> dplyr::if_else(a%%2==0,b,c,missing=ll)
[1] 2 3 5 7 11
Modo Completo
Es probable que sea el más usado en programación ya que permite agregar
código dentro del paréntesis y esto es muy bueno por el motivo que separa entre
cual se ejecuta y cual no. El if en español “si”se entiende como: Si el objeto
es menor que 8, entonces se ejecuta print e imprime “trozo de código a”, caso
contrario pasa a ejecutarse print e imprime “trozo b”.
42
2. CONDICIONAL
43
}else{
#si es FALSE
print("trozo de código b")
}
Dato Importante
43
44
CAPITULO 3. REPETIDORES Y CONDICIONALES
2.2.2 Switch
switch(expresion, case 1, case 2, case 3...,default)
bloque de codigo
defautt
{ ••• }
Cuando usted se encuentra en un mercado y observa que hay n marcas del
mismo producto que desea y por lo general ofrecen el mismo resultado pero usted
quiere una marca en especifico, entonces se acerca al vendedor para preguntar
por dicha marca.
44
2. CONDICIONAL
45
print("no disponible")
)
Nota importante
45
46 CAPITULO 3. REPETIDORES Y CONDICIONALES
3.2.3 Which
which(x, [Link], useNames)
Esta función solo retorna el índice del elemento que se encuentran en dicha
condición y esta dada dentro del paréntesis which(condición). Dicho esto which
significa cual y en español seria por ejemplo: ¿cual elemento del obj es igual a 3?
which(obj==3).
46
47
2. CONDICIONAL
47
o
■J
£
H
'HH
Oh
<
O
Atrapando Errores
1.1 try
Significa “intentar” y ofrece solo una opción que es “silent” siendo un booleano.
Esto permite omitir los mensajes que pueden aparecer si la expresión escrita
"• • • "genera algún tipo de alerta.
try(...,silent=TRUE)
Por ejemplo si tengo un vector de datos y a esto quiero sumarlo con un carácter
de la siguiente manera:
> try(mat+"a",silent=FALSE)
Error in mat + "a" : argumento no-numérico para operador
^ binario
49
50 CAPITULO 4. ATRAPANDO ERRORES
> try(mat+"a",silent=TRUE)
>
2.2 tryCatch
La palabra tryCatch hace referencia a intentar ejecutar el bloque de código y si
tiene error, lo captura y nos devolverá según se halla programado:
warning (leve) El tipo de mensaje que aparece como alarma pero en si hay un
funcionamiento (retorna valores), por ejemplo al crear una matriz con numero
total de elementos no son submúltiplos entre números de columnas.
tryCatch(
expr = {
# Operaciones...
# aquí...
},
error = function(e){
# si hay error
# ejecutar aquí
},
warning = function(w){
# si hay alarmas
50
2. TRYCATCH
51
# ejecutar aquí
},
finally = {
# (Opcional)
# se ejecutará como final
}
)
51
52 CAPITULO 4. ATRAPANDO ERRORES
},
error = function(e){
message('- error de dimensión -\n')
print(e)
},
warning = function(w){
message ( '-alarma-\n')
print(w)
},
finally = {
message ( '-final-')
}
}
#=
- error de dimensión -
O
<simpleError in matriz_l %*% matriz_2: argumentos no
^ compatibles>
- final - ©
52
o
£>
H
M—(
Oh
<
O
Funciones en R
53
CAPITULO 5. FUNCIONES EN R
Dato Importante
Observe este ejemplo que muestra de una forma más detalla como funciona:
> Nombre
function(){
O
print("Hola Mundo")
}
Por cierto también hay ocasiones en donde se comete errores al tratar de crear
funciones y dentro de los más cotidianos se encuentran los siguientes.
54
1. FUNCIONES SIN ARGUMENTOS
55
55
56 CAPITULO 5. FUNCIONES EN R
Argumentos
} retorna
un valor
Los argumentos no son mas que referencias que requiere la función para su
funcionamiento, se debe entender que estas referencias son objetos y que solo
estarán disponible dentro de la función. También se cuenta con un return(), ésto
sirve para hacer un retorno de solo un objeto o valor específico en toda la función.
# función simple
> Clase <- function(a){
tmp = log(a)/2
return(tmp)
}
Sin Referencia
Con Referencia
> Clase()
Error in Clase () :
el argumento "a" está
^ ausente,
sin valor por omisión
56
57
2. FUNCIONES CON ARGUMENTOS
Ahora el objeto a obligatoriamente tiene que recibir una referencia, caso con¬
trario genera un error.
Por ejemplo: se creará una función con dos argumentos “valor e inten¬
tos” donde valor recibe un número que se encuentre entre 1 y 10 e intentos
igual, dentro de la función (cuerpo) se tratará de crear un objeto temporal
que genera números aleatorios con un tamaño dado en el objeto intentos.
Después se creará un for para verificar si el objeto temporal es igual al valor.
Por casualidad intenté con estos valores y he acertado, trate usted dar valores
numéricos:
> suerte(valor=2, intentos=4) > suerte(valor=6, intentos=4)
[1] "inténtelo nuevamente" [1] " --> valor encontrado"
57
58 CAPITULO 5. FUNCIONES EN R
58
59
2. FUNCIONES CON ARGUMENTOS
#-> multiconvertidor
> convert <- function(dt, tipo="factor"){
if (! [Link](dt)){
switch(tipo,
"vector"= {
return([Link](dt))
},
"factor"= {
return([Link](dt))
},
"list"= {
return([Link](dt) )
},
"matrix"= {
return([Link](dt))
},
"raw"= {
return([Link](dt))
},
"[Link]"= {
return([Link](dt))
},
print("tipo no existe")
}else{
warning("Verifique si no esta vacio")
}
59
60 CAPITULO 5. FUNCIONES EN R
60
Otras Operaciones
'> [Link]("magrittr")
q
> library(magrittr)
61
62
CAPITULO 6. OTRAS OPERACIONES
> a
[1] 12 13 14 14 22 23 23 23 26 34 36 49
> # Sin el T
> obj %>% sort %T>% sum
[1] 289
62
1. OPERADOR PIPE
> objl < c (16, 18,26, 16, 30, 44, 34, 48, 56, 36,23, 37)
# Crear data trame
> tb <- [Link]("a"=obj,"b"=obj1)
# ================================
> tb %$% cor(a,b)
[1] 0.9490482
Este símbolo %<>% es muy similar al ejemplo 2 por el caso de — > a que genera
el mismo resultado y usted puede comprobarlo usando el símbolo de asignación
< — que el mismo R nos ofrece.
Al igual que “magrittr” también hay otra alternativa “library (pipeR) ” que es
muy similar y solo el cambio es “%»%”
63
64 CAPITULO 6. OTRAS OPERACIONES
2.2 Caracteres
Cada lenguaje de programación tiene en si su propio procesado de caracteres y
R no es exclusión. Cuando se habla de caracteres en R nos referimos a objetos
que tiene como elementos grupos de textos similares a nombres, fechas, correos y
otros casos. El procesado toma en cuenta los espacios vacios
H o 1 a M u n d o
1 2 3 4 5 6 7 8 9 10
64
2. CARACTERES
65
Ejemplo 3: Extraer solo una parte del texto dada por el indice y hacer
cambios de un solo carácter. También usar grep para verificar coincidencias
en elementos y luego imprimir dichos valores.
65
66 CAPITULO 6. OTRAS OPERACIONES
66
67
2. CARACTERES
67
68 CAPITULO 6. OTRAS OPERACIONES
e
> [Link]("stringr")
> [Link]("stringi")
> [Link]("tokenizers")
> [Link]("tidyverse",dependencies = T)
> [Link]("cleanNLP")
> library(tidyverse)
> library(stringr)
> library(stringi)
> library(tokenizers)
> library(cleanNLP)
68
69
2. CARACTERES
69
70
CAPITULO 6. OTRAS OPERACIONES
1
o
9 malo 2
10 muchos 1
11 usted 1
12 y 2
70
71
2. CARACTERES
> cnlp_init_stringi(locale="es_ES")
> cnlp_init_udpipe(model_name="spanish")
> cnlp_init_spacy(model_name="es")
Error: Python module 'cleannlp' not found. Install with:
pip install cleannlp
> cnlp_init_corenlp(lang="es")
Error: Python module 'cleannlp' not found. Install with:
pip install cleannlp
> #- ejemplo
> cnlp_annotate(input = Ib)
$token
# A tibble: 22 x 11
sid tid token token_with_ws lemma upos xpos feats tid_source relation
<int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 Es "Es " ser AUX NA Mood. . . 2 cop
1 2 malo "malo " malo ADJ NA Gend. . . 0 root
1 3 estar "estar " estar AUX NA Verb. . . 2 csub j
1 4 aqui "aqui " aqui ADV NA NA 3 advmod
1 5 "y n CCONJ NA NA 6 cc
Y y
1 6 bien "bien" bien ADV NA NA 4 con j
1 7 . " . \n" PUNCT NA NA 2 punct
1! . II
2 1 ¿ 6 ¿ PUNCT NA NA 5 punct
2 2 Usted "Usted " tú PRON NA Case. . . 5 nsub j
2 3 es "es " ser AUX NA Mood. . . 5 cop
# ... with 12 more rows
$document
doc_id
1 1
71
72
CAPITULO 6. OTRAS OPERACIONES
3.3 Gráficos
Hay muchas librerías en la comunidad del lenguaje R ofreciendo generar
gráficos de distintos tipos de diseño. Es importante tener todas las librerías y el
programa R actualizados. Para esta sección se necesitará estas librerías
1.3.1 Wordcloud
Genera una nube de palabras de forma aleatoria, también puedes agregar una
imagen como contorno.
Wordcloud:
e-
> library(webshot) fsirve para generar html
> library(wordcloud2)
> library(tokenizers)
4
72
73
3. GRAFICOS
hombre
Cuadro 6.2: Formas en wordcloud
1 Forma Produce ¡
circle Un circulo
cardioid Un gráfico cardioide
diamond Un diamante
triangle-forward Un triangulo hacia adentro
triangle Un triángulo
pentagon Un pentágono
star Una estrella
#
> wordcloud2(data = tb,shape="circled")
#
73
74
CAPITULO 6. OTRAS OPERACIONES
# librerías
> library(webshot)
> library(htmlwidgets)
#-
> img <- wordcloud2(data = tb,shape="circled")
#
> saveWidget(img, "[Link]",selfcontained = F)
> webshot("[Link]",file="[Link]", cliprect="viewport")
#
Información y ayuda:
Puede usted encontrar más información en la siguiente web:
https: //[Link]/ 196-the-wordcloud2-library
Si usted tiene instalado inkscape y desea una mejor calidad al exportar, use
esta web:
https: / / www. j asondavies. com/wordcloud/
2.3.2 Plotly
Una librería muy interesante que esta disponible en lenguajes de programación
como: Python, JavaScript, Matlab, Perl, Julia, Arduino y R. Como nos encontramos
en R entonces se necesita incluir esta librería plotly para las gráficas y dplyr es
alternativa para crear el cuadro de datos (tibble) que ante se usaba data. trame
e
> library(plotly)
> library(dplyr) # para tibble
4
La librería genera un fichero web (html) que solo se puede abrir con el navegador
web(si es que no cuenta con Rstudio).
74
75
3. GRAFICOS
Gráfico de donas
O
Hl
>
A
add_pie(hole = 0.6)
#-
> fg %>% layout(tifie =
O "Gráfica Dona" ,showlegend = T)
> fg # ver gráfico
Gráfica Dona
■ EIB
■ MBS
■ SDA
■ KWJ
■ KRS
■ SRA
■ BIA
■ LM
75
76
CAPITULO 6. OTRAS OPERACIONES
Se toma los elementos de tab para luego ser procesados en plot_ly, recuerda
que todo esto es almacenado en un nuevo objeto llamado fg.
Gráfico Pie(torta)
76
77
3. GRAFICOS
Gráfico de Dispersión
77
78
CAPITULO 6. OTRAS OPERACIONES
#
> a <- sample(1:240,size = 90,replace = F)
> tabla <- tibble(z = matrix(data = a,ncol = 10) )
> plot_ly(data = tabla,z=~z, type = 'heatmap')
# mapa de calor
#
#-
> plot_ly(data = tb, x=~x,y=~y, type = "bar", mode ="markers"
- )
# barras
#-
78
79
3. GRAFICOS
#-
> plot_ly(data = tb,x=~x, type "histogram")
# histograma
#-
79
80 CAPITULO 6. OTRAS OPERACIONES
#-
> plot_ly(data = tb,x=~x, type "box")
# gráfico boxplot
#-
trace 0
40 45 50 55
X
#-
> plot_ly(data = tb, x=~x, y=~y, type "histogram2d")
# gráfico histograma en 2d
#-
80
81
3. GRAFICOS
“Mas información”
En su pagina web [Link] encontra-
M rá todos los gráficos disponibles y si no es suficien-
te entonces descarge el cheat sheet que esta dispo¬
nible en [Link]
images/r_cheat_sheet.pdf
3.3.3 GGplot
Es una de las librerías muy usadas y esto es porque permite personalizar cada
detalle en la gráfica, lo de bueno es que trabaja modo sin conexión permitiendo
exportar la gráfica en diferentes formatos como: “eps, ps, tex (pictex), pdf, jpeg,
tiff, png, bmp, svg y wmf’.
e
> library(ggplot2)
> library(ggrepel) #geom_label_repel()
4
81
82
CAPITULO 6. OTRAS OPERACIONES
1 Código Produce
p + geom_density() gráfico de densidad
p + geom_dotplot() gráfico de puntos
p + geom_histogram(binwidth = n ) histograma
p + geom_barO gráfico de barras
p + geom_density() gráfico de densidad
data tb
10 20 25 30
respuesta
10 15 20 25 30
respuesta
82
83
3. GRAFICOS
> p + geom_bar()
83
84
CAPITULO 6. OTRAS OPERACIONES
-2 -1 Ó í 2
theoretical
Gráfico Pie
También esta la gráfica de torta pero hay todo un proceso para lograr el diseño,
al igual que el anterior se intentará crear un objeto temporal que nos servirá para
generar valores aleatorios y después incluirlo en QJ
Por tratarse de gráficos de una sola variable, usaremos solo la columna “tb$m”.
Se necesitará de la función geom bar() con el coord_polar() y un tema que
permite eliminar ciertas partes theme_void()
84
85
3. GRAFICOS
)
)# , o
85
86 CAPITULO 6. OTRAS OPERACIONES
UNO.
Usted debe intentar dar forma a sus gráficos probando distintas funciones
ya mostradas anteriormente. Ahora pasemos a los gráficos que necesitan de 2
variables, vea la siguiente tabla 6.5
1 Código Produce jj
p + geom_area() Gráfico de área con relleno
p + geom_bar() Gráfico de barras
p + geom_boxplot() Gráfico de cajas
Gráfico de lineas en ejes, úsalo como complemen¬
p + geom_rug()
to
Similar a geom_point( ), con la diferencia que
p + geomjitter()
agrega puntos aleatorios para datos dispersos
Distribución Bivariado
p + geom_bin2d() Mapa de calor con cuadros 2d
p + geom_density2d() Gráfico de densidad en dos dimensiones
Mapa de calor con cuadros hexagonales similar a
p + geom_hex()
geom_bin2d()
p + geom_area() Gráfico de relleno con lineas tipo cintas
p + geom_line() Gráfico de lineas
86
87
3. GRAFICOS
m
O airl
• P=1
• Pc2
pc3
pc4
sync
or 10 15 20 25 30
10 15 20
duración
25 30
duración
25 — m m
airl Ej3 airl
peí $ peí
20
pc2 pc2
pc3 Fyl pc3
pc4 pc4
15
sync sync
10 l,i I il , II I i i,ll I I I | I
10 15 20 25 30 16 20 24
duración duración
87
88 CAPITULO 6. OTRAS OPERACIONES
88
89
3. GRAFICOS
#library(ggrepel) #
> 11 <- p + geom_text_repel(aes(label=m), size= 3)
> 12 <- p + geom_label_repel(aes(label=m), size= 3)
> gridExtra::[Link](11,12)
a pc2
pc3
pc4
a sync
30
duración
m
a airl
a peí
a pc2
a pc3
a pc4
a sync
duración
Annotate
Los textos matemáticos también se pueden escribir en ggplot pero tiene su pro¬
pia sintaxis de escritura, si desea más información visite “[Link]
[Link] / su07/R/html / grDevices/html/plotmath .html”
89
90
CAPITULO 6. OTRAS OPERACIONES
m
• airl
• peí
• pc2
• pc3
pc4
• sync
Annotate permite usar la opción “rect” que permite crear un rectángulo a partir
de las dimensiones dadas
> p + geom_point() +
annotate("rect" ,
xmin=20, xmax=25,
ymin=8,ymax=30,
alpha=0.2 ,fill="red") +
theme_bw()
30
10 15 20 25 30
duración
90
91
3. GRAFICOS
la otra opción que crea una flecha en el gráfico, es “segment” y muy importante
cuando se trata de gráficos estadísticos
> p + geom_point() +
annotate("segment",
x=16, xend=19,
y=30,yend=26,
alpha=0.3 ,fi11="red",arrow=arrow(),size=2)
gráfico torta
Continuando con gráficos tipo torta, en este apartado se intentará mejorar el
diseño usando dos variables (columnas) por motivos de estética.
data para gráfico pie usando 2 variables
91
92
CAPITULO 6. OTRAS OPERACIONES
3 30 B2 19.2 52.2
4 24 A2 15.4 69.7
5 34 Al 21.8 88.0
92
3. GRAFICOS
Gráfico Circular
Categoría
Importante
9 Es necesario descargar estos dos ficheros:
stat_fill_labels.R
93
94
CAPITULO 6. OTRAS OPERACIONES
inv_cumsum.R
desde su pagina github del autor [Link]
larmarange/JLutils/tree/master/R o también en esta parte
https: / / github. com/Moriand/Rlabels
e 4^1
> source(file = [Link]()) #stat_fill_labels.R
l> source(file = [Link]()) #inv_cumsum.R
i 4
Intentaremos crear un objeto que contenga las etiquetas likert (lab) y un objeto
llamado casos que se encargara de almacenar la data
data casos
94
95
3. GRAFICOS
rep()
95
96
CAPITULO 6. OTRAS OPERACIONES
gráfico
# stat_fill_labels.R
# inv_cumsum.R
> s <- ggplot(data=casos,aes(x=w,fill=label,weight=prop))
> s + geom_bar(position = "fill") + scale_fill_brewer() +
theme_bw() +
labs (
fill="Indicador",face="bold",size=14,
y="Porcentaje",x="Según Dimensión") +
stat_fill_labels()
Indicador
Muy Satisfecho
Nada Satisfecho
Neutro
Poco Satisfecho
Totalmente Satisfecho
96
97
3. GRAFICOS
temas
La librería ofrece varios tipos de temas que cada uno de ellos tiene distintos
estilos.
1 temas temas |
theme_bw[) theme_grey[)
theme_classic() theme_light()
theme_dark[) theme_linedraw()
theme_void[) theme_minimcd[)
theme_gray() theme_test{)
argumentos
base_size = 14 tamaño del texto
base_family = "times" fuente tipográfica para el texto
base_line_size = 9 grosor de linea para los ejes x e y
grosor de la caja, Nota: funciona con “bw,
base_rect_size = 4
CLASSIC, LIGHT,LINEDRAW Y TEST”
temas
#library(ggplot2)
#library(tibble)
# ver data tb
> q <- ggplot(data = tb,aes(x=duracion,y=respuesta,color=m))
> p <- q + geom_point(size=6,alpha=0.4)
97
98
CAPITULO 6. OTRAS OPERACIONES
> gridExtra::[Link](pO,p2,p3,p4,p5,p6,p7,p8,p9)
• •
m
theme void
„o • • peí
pc2
¿•o P°3
• • Pc4
sync
airl
# peí
pc2
theme_grey y airl
peí
pc2
airl
peí
pc2
Pc3 t* pc3 Pc3
P°4 ••• pc4
peí
pc2
25 theme minimal y airl
# peí
pc2
airl
pcl
Pc2
PC3 pc3 pc3
pc4 pc4 pc4
sync sync sync
98
99
3. GRAFICOS
Si en los ejes “x” e “y” muestran textos sobrepuestos, debe agregar esta función:
Mas información
En el libro R Graphics Cookbook[2], “capitulo 8” y sección “Fonts” usted
puede encontrar más ejemplos sobre las fuentes tipográficas, temas y estilos.
99
Importando y Exportando ficheros
O sea que con esta función no se necesita escribir el directorio sino mas bien
aparecerá una interfaz que permite recorrer de forma gráfica donde esta el fichero
que se desea abrir y retornará una dirección, ¿muy interesante no te parece?.
Ahora intenta esto:
> print([Link]())
[1] "C:\\Users\\Den\\Desktop\\[Link]"
101
102
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
> print([Link]()
> [Link] ()
[1] "C:\\Users\\Denn\\Desktop\\[Link]"
Revise los ejemplos 2.1 y 2.2(pagina 60) que es otra alternativa personaliza-
ble para abrir y guardar ficheros.
102
103
1. csv
f C Destetop v C Oeiktcp p
1.1 CSV
El fichero sencillo de manejar en R y se presentará algunas funciones que se
encargan de importar y exportar fichero csv. A continuación se mostrará una tabla
que se tomará como ejemplo para procesar en R, al lado izquierdo se encuentra la
vista de la tabla y al lado derecho esta los datos en un fichero llamado [Link],
intente crear un fichero desde el bloc de notas y guárdelo como [Link] o también
puede hacerlo directamente de software MS Excel.
tabla
title 1 title2
fl 13 10
Í2 11 8
f3 18 13
f4 21,4 19,4
f5 16 12
f6 “12”
@
103
104
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
1.1.1 Importar
Se presentarán algunas funciones que permiten la importación de este fichero.
interna
read. csv(file, header, sep, quote, dec, fill, comment. char, row. ñames)
En file también puede agregar url, acepta enlaces que inicien con
http: / /, https : / /, [Link] o ftps : / / y terminen en .gz, ,bz2, .xz, o .zip
(caso de ser comprimido) y .csv por ejemplo:
file="http:// ..../[Link]"
104
105
1. csv
Ejemplo 1
Ejemplo 2
105
106 CAPÍTULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
fill = T, [Link]='
106
107
1. csv
readr
f
> library(readr)
> # si hay error usar
> [Link]("readr")
> library(readr)
En el ejemplo siguiente se observa que tiene un error y éste es generado por los
números que están en comillas, preste atención al delimitador(,) y al quote (\")
107
108 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
108
109
1. csv
csvread
Y por ultimo hay una librería externa que ofrece leer de 10M a más líneas con
una super velocidad usando poca memoria de R. Bueno esta librería se diferencia
de las otras por su gran velocidad en procesar los datos pero eso no lo hace el
único que usted pueda usarlo ya que por alguna razón no están incluidas estas
funciones quote y dec.
También es importante agregar que cuenta con la función de nrows, permi¬
tiendo solo cargar una determinada cantidad de filas.
Si desea mas información, visite [Link]
csvread/[Link]
e
> [Link]("csvread")
> library(csvread)
109
no CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
Ejemplo
> #
O
cambiar coma por punto
> tabla[] <-lapply(tabla, gsub, pattern=' replacement='.'
<-►
> tabla
titlel title2
fl 13 10
f2 11 8
f3 18 13
110
111
1. csv
f4 21.4 19.4
f5 16 12
f6 12 <NA>
> View(tabla) #--> ver por interfaz
como los nombres de las filas son “1,2,3,4,5,6,7”, entonces los cambio
por la lera columna.
111
112
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
2.1.2 Exportar
interna
Para la exportación de fichero csv en R es muy sencillo, solamente se requiere
de algunos comandos y listo. Al igual que en el caso de importar fichero, se
presentará por librerías y el motivo es nada mas que usted elija con cual se
siente más cómodo ya sea por rendimiento u otras funciones configurables. A
continuación se presentará algunas librerías populares.
112
113
1. csv
readr
Lo primero es abrir la librería para poder usar esta función, así que ejecute lo
siguiente:
<
> library(readr)
113
114
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
114
115
1. csv
[Link]
Al igual que la librería anterior, esta también es una librería externa que se
necesita instalar primero para después incluir en el actual proyecto.
e
> [Link]("[Link]")
> library([Link])
4
115
116 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
2.2 SPSS
También conocido por su nombre completo “IBM SPSS Statistics”, software
dedicado a estadísticos muy similar al lenguaje R pero con la diferencia de su
costo. En R hay muchas librerías que cumplen con la función de importar y
exportar, claro que cada una de ellas ofrece distintas opciones.
1.2.1 Importar
foreign
Se comenzará con una librería interna llamada “foreign”, esta librería ofrece
no solamente abrir ficheros .sav sino diversas extensiones de otros softwares que
en su gran mayoría no son libres , empezamos con:
Esta librería esta incluida dentro del lenguaje R pero se necesita llamarlo o
incluir en el trabajo actual para poder usarlo y para ello use lo siguiente:
> library(foreign)
# si deseas actualizar libreria
> [Link]("foreign")
4
116
117
2. SPSS
117
118 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
haven
> [Link]("haven")
> library(haven)
118
119
2. SPSS
col_select = c(l,3),
n_max = 4)
Por ultimo una librería muy interesante llamada readspss por el nombre
se deduce que solamente se encargar de abrir ficheros que solo pertenezcan
al software IBM SPSS y claro dentro de las extensiones son “,sav, .zsav, .por
y ,sav encriptado (con contraseña)”. Por el momento esta en desarrollo y se
necesita de Rtools para su instalación por lo que hace un poco complejo y si usted
quiere instalarlo entonces ingrese en esta url [Link]
readspss
119
120 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
2.2.2 Exportar
foreign
Se comienza con la librería foreign que ya ha sido conocido en importar
ficheros, entonces ahora nos enfocaremos en como exportar ficheros para el
software SPSS. La librería por defecto exporta dos ficheros y uno de ellos es un
documento de texto en formato “.txt”(es posible que usted se halla topado con este
tipo de fichero).
✓ exportar, sps
✓ [Link]
120
121
2. SPSS
> library(foreign)
# si deseas actualizar libreria
> [Link]("foreign")
121
122
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
haven
Como se había hablado anteriormente de la librería externa llamada haven,
también cuenta con una función que permite exportar a “.sav y .zsav”. Para
exportar cuenta con argumentos muy limitados como por ejemplo escoges si se
exporta de forma comprimida (.zsav) o no, aquí toma encuenta la extensión que
se esta nombrando. Por otro lado también acepta la fuente de los datos a exportar
como “[Link]”.
> [Link]("haven")
> library(haven)
t 4
122
123
2. SPSS
123
124 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
3.3 Excel
Por tratarse de un software muy popular sobre todo sencilla interfaz, sin
embargo el único inconveniente seria su precio por usar o mejor dicho la licencia
por equipo, estos precios varían de acuerdo a la versión del software.
Las versiones de Excel que almacenan la base de datos son dos “.xls” y “.xlsx”,
lo que seria de gran importancia conocer para poder usar de acuerdo a las librerías
que ofrece la comunidad de R.
1.3.1 Importar
readxl
124
3. EXCEL
125
r
# librería completa
> [Link]("tidyverse")
# instalar solo para excel
> [Link]("readxl")
#
También se puede reducir el código si solo usamos range en vez de sheet. Sola¬
mente se necesita el nombre de la hoja de datos, seguido un signo de admiración
y luego escribimos el rango.
> read_excel([Link]() ,
range = "tabla!B4:FIO"
col_names = T)
125
126 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS
2.3.2 Exportar
writexl
126
127
3. EXCEL
127
Base de Datos
1.1 MYSQL
Como dice wikipedia. “MySQL es un sistema de gestión de base de datos
relacional (RDBMS) de código abierto, basado en lenguaje de consulta estructurado
(SQL)”. Debido a su gran utilidad en trabajos, R ha decidido incluir una librería
llamada RMYSQL.
129
130 CAPITULO 8. BASE DE DATOS
controlador
port = 3306,
)
Nota: los valores dados son un ejemplo, usted trate de cambiarlos
130
1. MYSQL
131
Create Account
Databases
frT DASHBOARD
Alt your databases are listed below. Create news ones. upto a máximum of 3. with the button
at the bottom.
f g[] DATABASES^
LEARN MYSQL
datos:
Username:
Database:
Password:
131
132
CAPITULO 8. BASE DE DATOS
> [Link]("RMySQL")
# library(DBI)
> library(RMySQL)
4
1.1.1 Conectar
Una vez registrado en la página web y obtenido los datos como Username,
Database y Passsword. Entonces nos conectamos de la siguiente manera:
Como nuestra tabla se llama “TB” y queremos saber los elementos que con¬
tiene, bueno en R hay dos maneras de hacer este proceso: mediante consulta
(dbGetQuery) o por una función sencilla(dbReadTable). Ambos retornan una
clase tipo [Link].
QdbRÜdTabil^^^^^^B '/dbGetQuery
132
1. MYSQL
133
133
134
CAPITULO 8. BASE DE DATOS
2.1.2 Insertar
> con-^
77 'mujer' ‘no‘
76 'hombre' ‘no'
Edad(int)
Genero(char)
Vota(char)
134
1. MYSQL
135
Has notado que tanto los valores de Vota como Genero van entre comillas
simples y esto es simplemente porque ambos reciben solo caracteres (char), esto
es importante ya que si no lo usas y ejecutas el comando en SQL es muy probable
que te genere un error.
ydbSendQueryfconn, statement)
[1]
- "INSERT INTO TB(Edad,Genero,Vota) VALUES(34,'hombreno')"
135
136 CAPITULO 8. BASE DE DATOS
I
Para ver si ha procedido con la subida de los datos
20 20 51 hombre si
29 29 23 hombre si
30 30 34 mujer si
136
137
1. MYSQL
3.1.3 Editar
Como en el caso anterior que usamos dbSendQuery, también nos sirve para
editar un elemento de una determinada tabla ya que se esta hablando de hacer
una consulta y solamente se cambiará “INSERT INTO” por “UPDATE .. SET”.
Verificamos
137
138 CAPITULO 8. BASE DE DATOS
138
139
1. MYSQL
4.1.4 Eliminar
La sintaxis para eliminar un determinado elemento en sql es el siguiente
Verificamos
TB Nombre de la tabla
139
Creando Reportes
1.1 MS Word
Existe una librería llamada officer que permite generar un archivo .docx
compatible con las versiones actuales de Word y lo mejor es que no es necesario
instalar el software Microsoft office. Es una librería externa y así que se necesita
instalar lo siguiente.
> [Link]("officer";
función descripción
read_docx() iniciar documento
body_add_par(x,“ ”,style,pos) agregar párrafos
body_add_table(x,value,style) agregar tabla
body_add_gg(x,value,width,height,style) agregar gráficos (solo ggplot)
body_add_img(x, src, width, height, sty le) agregar gráficos externos
141
142
CAPITULO 9. CREANDO REPORTES
1 style descripción |
“Normal” texto normal
“heading 1” primer subtitulo
“heading 2” segundo subtitulo
“heading 3” tercer subtitulo
“ t able_t e mplat e ” estilo 1 en tablas
“Table Professional” estilo 2 en tablas
“Light List Accent 2” estilo 3 en tablas
“table title” titulo para tablas
“graphic title” titulo para gráficos
Si usted tiene instalado Rstudio intente crear un nuevo fichero R script teclean-
do ( Ctrl F]+[ÑJ
) o desde su IDE preferido del lenguaje R trate de crear un nuevo
fichero R script, guárdelo. Una vez que tiene un fichero “documento.R” dentro de
él escriba lo siguiente:
# librerías
#-
> library(officer)
> library(magrittr)
> library(ggplot2)
> library(plotrix)
#-
> directorio <- "D:/reporte/word/"
* O
> sp <- c (1,1, 1, 4,4,4, 4, 4, 4, 4, 3, 3, 3,3, 3, 2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2)
> indicador <- factor(x = sp ,levels = c(l:4),
labels = c("Nada Satisfecho",
"Poco Satisfecho",
"Satisfecho",
"Muy Satisfecho"))
> tab <- [Link](table(indicador))
#- 0
> grafico3 <- ggplot(tab,aes(x="",y=tab$Freq,
fill=factor(tab$indicador))) +
142
1. MS WORD
143
#- ©
> fig <- paste(directorio,"[Link]",sep = "")
> ggsave(plot = grafico3,filename = fig,device = "wmf",
dpi = 72,limitsize = T)
#- o
> color <- c("#526189","#f6f6f6","#d3d9e7","#a3acc5")
#-
> fan paste(directorio,"[Link]",sep = "")
<-
> [Link](file = fan,height = 5, width = 10,
pointsize = 14)
> [Link](x = tab$Freq,labels=[Link](tab$indicador),
col = color,ticks = 30)
> [Link]()
#-
> párrafo = " Se ha hecho una investigación en una empresa
que cuentra con 32 empleados, cuyo objetivo es
saber si están satisfechos en su desempeño laboral
dentro de la empresa:"
#-———-:-—
143
144
CAPITULO 9. CREANDO REPORTES
body_add_img(src = fan,height = 3,
width = ,
6 pos = "after" )%>%
body_add_par(valué = "Gráfico abanico",
style = "graphic tifie") %>%
body_add_par("",style = "Normal") %>% #- nueva linea
body_add_par(párrafo,style = "Normal") %>%
body_add_par("Representación personal" ,
style = "heading 2")
> print(docu,target = guardar )
144
1. MS WORD
145
1. Reporte ...
1.1. Satisfacción Laboral
Se ha hecho una investigación en una empresa que cuentra con 32 empleados,
cuyo objetivo es saber si están satisfechos en su desempeño laboral dentro de la
empresa:_
indicador Freq
Nada Satisfecho 3
Poco Satisfecho 17
Satisfecho 5
Muy Satisfecho 7
Indicador
Nada Satisfecho
Poco Satisfecho
Satisfecho
Muy Satisfecho
Gráfico Pie
145
146 CAPITULO 9. CREANDO REPORTES
Gráfico abanico
146
147
2. MARKDOWN
2.2 Markdown
Print... fe R HTML
Cióse Ctrl+W
R Documentation
Cióse All Ctrl+Shift+W
OK Cancel
Otro dato importante es que después de guardar el fichero con ( [ctríj + fs^ ),
intente abrirlo en codificación utf-8 para que así permita reconocer texto español
como tilde y otros casos como la eñe.
147
148 CAPITULO 9. CREANDO REPORTES
Install Packages...
Options
(J> Checkfor Package Updates...
Editlng Display
General
Completion Diagnostlcs
Versión Control ►
General Shell...
Code ■■
Ensure that source files end wlth newline
Terminal ►
!] Appearance Strip trailing horizontal whitespace when saving
✓ Restore last cursor position when opening file Jobs ►
fAsk]
Pane Layout
Serialization
Addins ►
Asen
| Packages BIG5
Une ending conversión: Platform Nadve v] GB18030 Keyboard Shortcuts Help Shift+Alt+K
GB2312
*5* R Markdown Default text encodlng; Modify Keyboard Shortcuts...
ISO-2022-JP
[Ask] Change... ISO-2022-KR
C-‘~ Sweave ISO-8859-1 Project Options...
ISO-8859-2
Spelling ISO-8859-7
SHIFT-JIS 1 Global Options...
WINDOWS-1252
^ Git/SVN
Publishing
2) Show all encodings
H Terminal
D
OK Cancel
A\
- Cabecera -
title: "Reporte"
author: "Tu nombre"
date: '2020-03-12'
documentclass: article
classoption: 12pt,letter,twocolumn
geometry: margin=lin
header-includes:
- \usepackage[spanish]{babel}
output:
pdf_document:
df_print: kable
fig_caption: yes
toe: yes
geometry: margin=lin
papersize: letter
148
149
2. MARKDOWN
Todo lo que esta dentro de pdf_document permite tanto como incluir toe (lab la de
contenidos) como títulos en gráficos y tipo de tabla.
149
150
CAPITULO 9. CREANDO REPORTES
RMarkdown ofrece compilar varios formatos como son: HTML, PDF Y Word
I ¿cL i 1 ✓ A 5# X
e Knit to HTML
0
Knit to PDF
* Knit to Word
Generar PDF
Los saltos de líneas o líneas vacías juegan un papel muy importante en Mark-
down, tales permiten separar y crear párrafos. Markdown resulta ser mas sencillo
para crear artículos rápidos pero sino respetas ciertas reglas pueda que te compli¬
ques.
secciones o encabezados
150
2. MARKDOWN
151
1 Escribir Produce jj
# Encabezado 1 Encabezado 1
## Encabezado 2 Encabezado 2
### Encabezado 3 Encabezado 3
#### Encabezado 4 Encabezado 4
##### Encabezado 5 Encabezado 5
###### Encabezado 6 Encabezado 6
estilos en caracteres
Para usar itálica simplemente se usa un asterisco “*texto en itálica*” o un
guión bajo “_texto en itálica_” pero si al asterisco se le agrega otro asterisco,
esto pasa a ser negrita “**texto en negrita**”.
También esta el subrayado y KTj}Xofrece su comando
“$\underline{texto subrayado}$”.
1 Escribir Produce |
★itálica* itálica
* *negrita* * negrita
* *_itanegrita_* * itanegrita
$\underline{subrayado}$ subrayado
~~tachado~~ tachado
**Modo Html**
151
152 CAPITULO 9. CREANDO REPORTES
Modo Html
listas
Si estas en un párrafo o cualquier otro caso, da un salto de línea para crear
la lista. Las listas se crean mediante lo siguiente: un espacio seguido de un
guión(número o letra) seguido de un espacio y después el texto que deseas en esa
lista, por ejemplo:
152
2. MARKDOWN
153
a. lista 1 a. lista a
b. lista 2
- lista bl b. lista b
- lista bl.1
o lista b 1
. lista b 1.1
M Si
□ No
> Cita
Cita en bloque
> en bloque
153
154 CAPITULO 9. CREANDO REPORTES
[Al]:son java,php,Ruby,css
1 son java,php,Ruby,css
3.2.3 código
Existe una lista de infinidades lenguajes de programación y Rmarkdown tam¬
bién cuenta con la función de incluir la sintaxis de dicho lenguaje para ser
mostrado en el documento.
python
import statistics as stad
tr = [32, 13, 25, 36, 56, 24, 11, 28, 45, 31,23,38]
154
2. MARKDOWN
155
print([Link](tr))
#[23.25, 29.5, 37.5]
"html
<button type="button">Boton</button>
tr = [32, 13, 25, 36, 56, 24, 11, 28, 45, 31,23,38]
print([Link](tr))
#[23.25, 29.5, 37.5]
<button type="button">Boton</button>
155
156 CAPITULO 9. CREANDO REPORTES
4.2.4 figuras
Librerías R importantes que se deben de incluir dentro del documento:
'''{r ,warning=FALSE}
library (knitr)
library (ggplot2)
library(plotrix)
exportar
—« markdown_fil.es
—«grá[Link]
—«[Link]
—«[Link]
locales
En el directorio tengo dos imágenes: grá[Link] y [Link]
Intentaré usar esas imágenes para incluir en el documento actual:
include_graphics("grá[Link]")
156
157
2. MARKDOWN
creadas
Aquí se necesitarán las librerías pero primero intentemos crear nuestro marco
de datos y se muestra a continuación:
Nuestro marco de datos es tab y con ello intente hacer gráficos como por
ejemplo.
ggplot(tab,aes_(x="",y=tab$Freq,fill=factor(tab$indicador)))+
geom_bar(width = l,stat = "identity")+
coord_polar("y")+
geom_text(aes(label=paste(round(Freq/sum(Freq)* 100,1),"%")),
position=position_stack(vjust = 0.5))+
theme_void(base_size = 18)+labs(fill="Indicador")
157
158 CAPITULO 9. CREANDO REPORTES
Indicador
| Nada Satisfecho
| Poco Satisfecho
Satisfecho
Muy Satisfecho
5.2.5 tablas
Las tablas creadas en markdown solo consiste en lineas verticales y horizonta¬
les, lo que hace muy sencillo la manipulación.
crear
Se intentará crear tablas manualmente, es importante agregar que también se
puede agregar texto matemático y alineación por cada columna.
158
159
2. MARKDOWN
librería
En la figura 9.6 agregar esta librería
library(kableExtra)
Una vez agregado necesitamos nuestra data tab (vea el Listing 1) y haga lo
siguiente
{r tabla,echo=F}
kable(tab,format="látex",booktabs=T,align="c",
caption="Tabla A")%>%
kable_styling(latex_options ="hold_position")%>%
column_spec(1,bold = T,color = "black")
Cuadro 3: Tabla A
indicador Freq
Nada Satisfecho 3
Poco Satisfecho 17
Satisfecho 5
Muy Satisfecho 7
159
160 CAPITULO 9. CREANDO REPORTES
6.2.6 bibliografía
Las referencias de documentos como:libros,artículos,revistas,enlaces y otros.
Son almacenados desde un fichero externo llamado bibliografí[Link](no uses tilde),
para saber como obtener referencias desde software visite la sección 3.5 J. Primero
tenemos que agregar más elementos a nuestra cabecera:
- Agregar a Cabecera .-
bibliography: bibliografí[Link]
csl: [Link]
output:
pdf_document:
citation_package: natbib
exportar
markdown files
—•bibliografía. bib
—*[Link]
—«gráfico, png
-^markdown. Rmd
—«[Link]
_ bibliografí[Link] _
@article{khan2020,
tifie = {Level of satisfaction regarding ...},
volume = {70},
issn = {0030-9982},
doi = {10.5455/JPMA.10977},
pages = {452—456},
160
2. MARKDOWN
161
number = {3},
journaltitle = {{JPMA}. The Journal of ...},
shortjournal = {J Pak Med Assoc},
author = {Khan, Muhammad Lakhmir and ...},
date = {2020-03},
pmid = {32207424},
keywords = {Level of satisfaction, ...}
# Referencias
Compila el documento haciendo clic en el icono "J " y elija pdf(ver figura
9.5) E intente usar natbib y biblatex en citation_package
output:
pdf_document:
citation_package: biblatex
161
162
CAPITULO 9. CREANDO REPORTES
(a) natbib
Referencias
Muhaminad Lakhmir Khan, Misbah Ghous, Imran Amjad, Munazza Nouman, and Irum
Yaqoob. Level of satisfaction regarding physical therapy Services in district poonch, azad
jammu kashmir. 70(3):452-456. ISSN 0030-9982. doi: 10.5455/JPMA.10977.
I A_a A i k A A k
(b) biblatex
Referencias
[1] Muhammad Lakhmir Khan y col. “Level of satisfaction regarding physical therapy
Services in district Poonch, Azad Jammu Kashmir”. En: JPMA. The Journal of the
Pakistán Medical Association 70.3 (mar. de 2020), págs. 452-456. ISSN: 0030-9982. DOI:
. 10.5455/JPMA. 10977.
A k A A_A k A
162
3. LATEX
163
3.3 Látex
Hay IDEs del lenguaje R que tienen incorporado la función llamada R Sweave
o mejor conocido en KTjXcomo knitr. Si usted tiene Rstudio instalado, inicie y
haga igual como se muestra en la imagen. Para guardar la ventana de la derecha
presione Ctrl
~~\o <a*- HJ
9 RScript Ctrl+Shift+N
lr< R Notebook
o. R Markdown...
© Plumber API...
Text File
qn»j C++ File
Python Script
u SQL Script
© Stan File
©j 03 Script
R Sweave K
|
Create a new R
osK
Sweave document
9_ R Documentation
163
164 CAPITULO 9. CREANDO REPORTES
Configuración
\documéntelass[llpt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{microtype}
\usepackage[xllnames,table]{xcolor}
\usepackage{hyperref}
\usepackage{geomet ry}
Cuerpo
\begin{document}
\section{Hl}
\subsection{H2}
\subsubsection{H3}
%-este es un comentario —
\section{Hl}
\subsection{H2}
\subsubsection{H3}
\end{document}
<< >> =
164
3. LATEX
165
paper
paperheight
left
(inner)
paperwidth
\geometry{
paper=a4paper,
left=2.5cm,
right=3.8cm,
top=l.5cm,
bottom=l.5cm,
heightrounded,
marginparwidth=51pt,
marginparsep=17pt,
headsep=24pt,
}
\usepackage{layout} % paquete
\makeatletter
\renewcontmand* {\lay@value} [2] {%
\strip@pt\dimexprO.351459\dimexpr\csname#2\endcsname\relax\relax
}
\makeatother
\begin{document}
\layout % crea una pagina con la geometría
\end{document}
165
166 CAPITULO 9. CREANDO REPORTES
1.3.1 Textos
Tipo de letra
Escribir lOpt llpt 12pt Produce 1
{\tiny Tiny} 5pt 6pt 6pt Tiny
Hay algunos comandos que permiten hacer que el texto sea en negrita, itálica
o cualquier otro.
1 Escribir Produce ¡
{\rm Román } Román
{\em Enfático} Enfático
\textbf {Negrita} Negrita
\textit {Itálica} Itálica
{\sf Sans Serif } Sans Serif
\underline {Subrayado} Subrayado
166
167
3. LATEX
Párrafos
Los comandos que permiten crear párrafos son:
1 Escribir Produce f
\paragraph {Titulo} ... Titulo
\subparagraph {Titulo} ... Titulo
\documentclass[1lpt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb}
\begin{document}
Entrada 1
\section{Hl}
\paragraph{Párrafo 1}
En cada viaje Mr. X sigue siendo un escritor ...
\subparagraph{Sub párrafo 1}
Uno de sus viajes Mr. X tuvo un problema ...
\paragraph{Párrafo 2}
Cada quien entendió a su manera, no obstante ...
\subparagraph{Sub párrafo 2}
Siempre decia que la felicidad ...
\end{document}
1 H1
Párrafo 1 En cada viaje Mr. X sigue siendo un escritor que esta muy
ancioso de seguir escribiendo nuevas novelas que cuentan cada realidad sub¬
jetiva de un hombre quien dio la vida por un momento de felicidad • • •
Genera 1
Sub párrafo 1 Uno de sus viajes Mr. X tuvo un problema con uno
de los marines y es que en cuestión, él nunca prestaba atención a los • • •
167
168 CAPITULO 9. CREANDO REPORTES
Alinear texto
Alinear un grupo de textos en ETpXes muy sencillo y fácil, se usa los entornos
flushleft, flushright y center “únicamente solo cambia el texto que se encuentra
dentro del entorno
\begin{} ..\end{}”.
Izquierda Produce
Derecha Produce
G \end{flushright} ü
a Texto abajo
Texto abajo
Centro Produce
Espacios
Para dejar espacios en ETpXtambién usamos comandos que son sencillos de
memorizar, las medidas aceptadas son: puntos (pt), pulgadas (in), centímetros
(cm), milímetros (mm), (em) y picas (pe)
168
169
3. LATEX
Escribir Información 1
\hfill a El texto a se mueve totalmente hacia la derecha
\vfill b El texto b se mueve en su totalidad hacia abajo
\hspace {0.2in} c El texto c es movido horizontalmente en 0.2in
\vspace {0.2in} d El texto d se mueve vertical(abajo) en 0.2in
\par e El texto e se escribe en una nueva linea
Listas
Las listas en ETjXson de distintas formas: item (itemize),enumeración (enumé¬
rate) y descriptivo (description). Cada una de ellas con sus respectivos diseños
que también son editables los iconos o simbolos.
Para su edición algunos de los simbolos requieren agregar paquetes en ETgX(
vease la figura 9.11):
\documentclass[1lpt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,array,ams fonts,latexsym,cancel,amssymb}
\usepackage{textcomp,wasysym} % <-
\let\Square\relax % importante
\usepackage{bbding} % <-
169
170 CAPITULO 9. CREANDO REPORTES
Modo normal
170
171
3. LATEX
\end{itemize}
O by c
Entrada 6
C0
usando \textbf {label} es usando label
u
fH
\begin{itemize}[label=$\bigstar$] 3
★ ayb
\item a y b t¡3
\begin{enumérate}
1. uno
\item uno
\item dos 2. dos
\end{enumérate}
\item c y d ★ cy d
171
172 CAPITULO 9. CREANDO REPORTES
.
2 3.2 Ecuaciones
\documentclass[1lpt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,array,ams fonts,latexsym,cancel,amssymb}
Nota: Para escribir un símbolo como texto use el dolar, ejemplo $\alpha$
\int _{b}A{a} 2x
/> \iint __{b}A{a} 2x U>
\prod _bAa n;;
172
3. LATEX
173
Por ejemplo a y el ¡3
\begin{align*}
\pmb{\hat{\beta}} &= \dfrae{\pmb{S_{xy}}} {\pmb{S_{xx}}} \\
\pmb {\int_{ 0 } A2 } x/'{2}dx &= \dfrac{8}{3}
\end{align*}
Recuerda que el texto matemático esta en el centro
173
CAPITULO 9. CREANDO REPORTES
(véase (3.2))
(9.1)
Para referencias use 3.2 al igual que en el otro 3.2. Pero también tenemos la
ecuación general 9.1
3. LATEX
175
\begin{multline}
Entrada 10
\pmb{f(x)} = axA{10}+32+axA{9}+12x+23+axA{8}+llx+8+axA{7}+
9x+4+axA{6}+8x+9+axA{5}+8x \\
+12+axA{4}+7x+7+axA{3}+45x+3+axA{2}+5x+3+ax
\label{eq:enorme}
\end{multline}
Referencia con \textbf{\ref{eq:enorme}}
Genera 10
f(x) = ax10 + 32 + ax9 + 12x + 23 + ar8 + llr + 8 + aa:7 + 9a: + 4 + ar6 + 8a; + 9 + aa;5 + 8x
+ 12 + axA + 7x + 7 + ax3 + 45r + 3 + ax2 + 5r + 3 + ax (9.2)
175
176 CAPITULO 9. CREANDO REPORTES
1 Escribir Produce 1
\cancel {a} 0
\bcancel {2xA{0}}
\xcancel {0x} M
n
En align se usa & para determinar su alineación y estas lineas \ \ para escribir
en el siguiente renglón (En el ultimo no usarlo)
begin{align}
\begin{align*}
Entrada 11
0 + 2 x = 0? M= 3x
0 = 2x
0 = 2x 0 = 0
176
177
3. LATEX
$$
X= 2\;\;\;\;\;x+b x = 2 r+b
$$
Mas información
Para las ecuaciones revise este libro en el “capitulo 4” [1] y también este otro
[10]. Ambos libros están disponibles en la web y están muy bien detallados.
177
178 CAPITULO 9. CREANDO REPORTES
3.3.3 Tablas
Mediante librerías
r
> [Link]("kableExtra")
> [Link]("xtable")
4
Consolé -/ © =□
> [Link]("kableExtra")
<<label,echo=F,results='asis' >>=
# aquí escribir todo lo relacionado con R
@
178
179
3. LATEX
te “tab:”
I
Nota: TRUE es lo mismo que escribir una T mayúscula.
\documentclass[1lpt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{graphicx,wrapfig}
\usepackage{longtable,booktabs,multirow}
\usepackage{array,float,pdflscape,tabú}
\usepackage{threeparttable,threeparttablex}
\usepackage[normalem]{ulem}
\usepackage{xcolor,colortbl,makecell}
o_
O-- — -----■-■ — ■
<<echo=FALSE,warning=FALSE,message=FALSE>>=
library(knitr)
library(kableExtra)
library(xtable)
options([Link] = FALSE)
@
o._
o
<<echo=FALSE>>=
179
180 CAPITULO 9. CREANDO REPORTES
#-
large <- function (x) {
o
pasteO ( ' { \\Large {Wbfseries ' , x, '}} ')
}
#-
nombre <- c ( "el","c2","c3","c4","c5","c6")
tb = [Link](
"x"= sample(1:15,size = 6,replace=T),
"y"= runif(n=6, min = 8, max = 26 ),
"z"= sample(30:65,size = 6,replace = T)
)
rownames(tb) <- nombre
#-
media <- round(mean(tb$x),2)
@
o_
O --------
\begin{document}
\section{Reporte}
Intente crear una tabla desde \textbf{R}
<<tabla,echo=F>>=
kable(tb,format = "látex",booktabs=T,align="c",caption="Tabla A" ,
[Link]=l) %>%
kable_styling(latex_options ="hold_position") %>%
column_spec(1,bold = T,color = "black")
@
\end{document}
180
181
3. LATEX
Una vez escrito todo dale clic al icono del para compilar:
El resultado es:
181
182
CAPÍTULO 9. CREANDO REPORTES
el 4 22.13087 36
c2 10 17.22997 50
c3 7 17.39483 64
c4 6 20.10082 65
c5 9 15.00441 33
c6 7 22.05967 61
n
x = 7,17
X y Z
el 4 22.13 36
c2 10 17.23 50
c3 7 17.39 64
c4 6 20.10 65
c5 9 15.00 33
c6 7 22.06 61
ce= c(12,2,3)
print(2*ce)
## [1] 24 4 6
182
3. LATEX
183
Manualmente
Se iniciará primero por crear tablas simples y para ellos es necesario incluir
estos paquetes: \usepackage{multicol,multirow,booktabs} en la figura 9.11:
- Agregar paquetes -
\documentclass[llpt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath,array,amsfonts,latexsym,cancel,amssymb}
%-> Listas <-
\usepackage{textcomp,wasysym}
\let\Square\relax
\usepackage{bbding}
\usepackage{enumitem}
%-> Tablas <-
\usepackage[xlInames,table]{xcolor}
\usepackage[capposition=top]{floatrow} % título arriba
\usepackage{multicol,multirow,booktabs}
\usepackage{threeparttable}
\usepackage{longtable}
\begin{table}[!htb]
\centering
\begin{tabular}{|c|c|c|c|}
\hline
& & & \\ \hline
& & & \\ \hline
& & & \\ \hline
& & & \\ \hline
& & & \\ \hline
\end{tabular}
\caption{Título}
\label{ t ab:my_lab}
\end{table}
183
184 CAPITULO 9. CREANDO REPORTES
carácter significado
1 alineación hacia la izquierda(left)
c alineación hacia el centro
r alineación hacia la derecha(rigth)
alinea al medio y limita el ancho de toda la columna a
m{8cm}
8cm
alinea tipo párrafo y limita el ancho de toda la columna
p{8cm}
a 8cm
\begin{table}[!htb]
\centering
\rowcolors{3}{DeepSkyBluel}{Coral1 } %fila 3 y 4
\begin{tabular}{|c|c|c|c|}
Entrada 12
\hline
\rowcolor{gray!30} & & TI & \\ \hline
2 & &\cellcolor { green} & \\ \hline
3 & & c & \\ \hline
4 & & d & \\ \hline
\end{tabular}
\caption{Título 2}
\label{ tab:my_lab2}
184
3. LATEX
185
\end{table}
Cuadro 2: Título 2
Genera 12
También se puede pintar por columnas pero requiere crear nuevos comandos
como se muestra a continuación:
\newcolumntype{nombre}{>{}alineación}
\newcommand{\nombre}[1]{\textcolor{color}{\textbf{#1}} }
\begin{document}
Entrada 13
\begin{table}[!htb]
\centering
\begin{tabular}{|a|c|e|}
\hline
\tex{Tl} & T2 & \tex{T3} \\ \hline
& & \\
& & \\
& & \\ \hline
\end{tabular}
\caption{Título 3}
185
186 CAPITULO 9. CREANDO REPORTES
\label{ tab:my_lab3}
\end{table}
\end{document}
Cuadro 3: Título 3
Genera 13
186
187
3. LATEX
Las tablas anteriores son con estilo, pero que tal si se requiere de tablas tipo
reportes o tesis. Abajo te presento en la tabla 9.19 las lineas que son usadas :
1 Lineas Dibuja f
\toprule linea superior
\midrule linea central
\cmidrule (Ir){i-j} pequeñas lineas
\bottomrule linea final
1 Comando Descripción i
multirow{m} [vspace] {*} {texto} unir celdas por filas (a la derecha)
multicolumn{n}{1er}{texto} unir celdas por columna(hacia abajo)
Ejemplo 1
\begin{table}[!htbp]
\centering
\begin{tabular}{ccc}
\toprule
\bf Estado & \bf Label & \bf Valor \\ \midrule
Entrada 14
187
188 CAPITULO 9. CREANDO REPORTES
Cuadro 4: Caption
Mal ing 12
Regular salt 4
Bueno run 6
Total 22
Hombre 10 0
Mujer 0 10
\begin{table}[!htbp]
\centering
\begin{tabular}{cccc}
\toprule
\multirow{2}[7]{*}{Sexo} &
\multicolumn{3}{c}{ Educación } \\ \cmidrule{2-4} %
Entrada 15
188
189
3. LATEX
\end{table}
Educación
Hombre 1 0 0
Mujer 0 1 0
\begin{table}[!htbp]
\centering
\begin{threeparttable}
\begin{tabular}{ccc}
\toprule
\bf Estado & \bf Label & \bf Valor \\ \midrule
Mal & ing & 12 \\
Entrada 16
189
190 CAPITULO 9. CREANDO REPORTES
Cuadro 6: Caption
Mal ing 12
Regular salt 4
Bueno run 6
Total 22
\begin{table}[]
\resizebox{\textwidth} {'.}{%
\begin{tabular}{ccc}
\end{tabular}
}%
inicia cabecera
\multirow{2}[7]{*}{Sexo} &
\multicolumn{3}{c}{ Educación } \\ \cmidrule{2-4} %
& Primaria & Secundaria & Superior \\ \cmidrule(r){1-1}
\cmidrule(Ir){2-2}
\cmidrule(Ir){3-3}
\cmidrule(1){4-4}
\endhead
%========== fin cabecera
190
191
3. LATEX
\hline \multicolumn{4}{r}{\textit{Continua en la
siguiente pagina}} w
\endfoot
%========= pie de pagina
\bottomrule
\endlastfoot
\label{tab:my_tab7} %-> referencia
%========= fin pie de pagina
H & 2 & 3 & 4 \\ H & 1 & 3 & 4\\ H & 1 & 3 & 4\\ H & 2 & 3 & 4\\
H & 7 & 3 & 7 \\ H & 1 & 3 & 4\\ H & 2 & 3 & 4\\ M & 2 & 1 & 4\\
H & 2 & 7 & 6\\ M & 4 & 3 & 4\\ H & 4 & 3 & 4\\ M & 2 & 3 & 1\\
M & 2 & 3 & 1\\ M & 1 & 3 & 4\\ H & 2 & 3 & 4\\ M & 2 & 3 & 6\\
M & 2 & 3 & 4\\ M & 2 & 3 & 1\\ H & 4 & 3 & 7\\ M & 2 & 1 & 4\\
H & 6 & 3 & 6\\ M & 4 & 3 & 4\\ M & 2 & 3 & 4\\ M & 4 & 3 & 4\\
M & 2 & 3 & 1\\ H & 1 & 3 & 6\\ M & 2 & 7 & 4\\ M & 2 & 3 & 4\\
H & 2 & 3 & 4\\ H & 2 & 3 & 1\\ M & 2 & 3 & 4\\ M & 2 & 3 & 1\\
M & 6 & 7 & 1\\ M & 4 & 3 & 4\\ M & 2 & 1 & 4\\ M & 2 & 3 & 6\\
H & 2 & 3 & 6\\ M & 2 & 7 & 4\\ M & 2 & 3 & 1\\ M & 2 & 3 & 4\\
H & 6 & 3 & 1\\ M & 2 & 3 & 4\\ M & 2 & 3 & 4\\ M & 2 & 3 & 1\\
H & 2 & 3 & 4\\ M & 2 & 3 & 4\\ M & 2 & 3 & 4\\ M & 2 & 3 & 4\\
\end{longtable}
\end{center}
191
192
CAPITULO 9. CREANDO REPORTES
Educación
Cuadro 11: Título de tabla Sexo Primaria Secundaria Superior
M 2 3 1
Educación
H 1 3 6
Sexo Primaria Secundaria Superior M 2 7 4
H 2 3 4 M 2 3 4
H 1 3 4 H 2 3 4
H 1 3 4 H 2 3 1
H 2 3 4 M 2 3 4
H 7 3 7 M 2 3 1
Genera 17
H 1 3 4 M 6 7 1
H 2 3 4 M 4 3 4
M 2 1 4 M 2 1 4
H 2 7 6 M 2 3 6
M 4 3 4 H 2 3 6
H 4 3 4 M 2 7 4
M 2 3 1 M 2 3 1
M 2 3 1 M 2 3 4
M 1 3 4 H 6 3 1
H 2 3 4 M 2 3 4
M 2 3 6 M 2 3 4
M 2 3 4 M 2 3 1
M 2 3 1 H 2 3 4
H 4 3 7 M 2 3 4
M 2 1 4 M 2 3 4
H 6 3 6 M 2 3 4
M 4 3 4
M 2 3 4
M 4 3 4
Continua en la siguiente pagina de acuerdo a la tabla 11 referenciado
4.3.4 Figuras
Hay librerías como ggplot2,plotrix,RGL y plotly(shiny) que generan un per¬
fecto diseño en R y lo mejor de todo es que se puede exportar a pdf sin perder
calidad alguna. Dentro de estos símbolos se discutirá la dimensiones de los
gráficos « >>=
e VR‘*
> [Link]("ggplot2")
> [Link]("rgl")
> [Link]("plot3D")
#-
> [Link]("plotrix")
192
3. LATEX
193
Argumento función
Es la etiqueta que sirve para referenciar en
label látex por ejemplo: \ref {f ig:label} ím-
portante “fig:”
Al usar [Link] se debe reducir cada figura, por ejemplo si [Link]=2 que crea
dos columnas y n-filas, usar [Link]="0.48\\textwidth". También debes
saber que todos los argumentos en << »= se escriben en una sola linea.
\usepackage{subfig} %<
193
194
CAPITULO 9. CREANDO REPORTES
o_
o-
«echo=FALSE,warning=FALSE,message=FALSE»=
library(knitr)
library(ggplot2)
library (rgl)
library(plot3D)
library(plotrix)
@
o_
o
«echo=FALSE»=
tb = [Link](
"x"= sort(rnorm(100) ) ,
"y"= rnorm(lOO),
"z"= runif(n=100, min = 1, max = 10)
)
#-
sp <- sample(1:4,size = 20,replace = T)
x3 <- factor(x = sp , levels = c(l:4),
labels = c("Nada Satisfecho",
"Poco Satisfecho",
"Satisfecho",
"Muy Satisfecho"), ordered = T )
#-
lk <- table(x3)
tab <- [Link](lk)
@
O_
Q-
«figural,echo=F,[Link]='60%',[Link]='angle=90'»=
Entrada 18
194
3. LATEX
195
00 CD Tf CNJ
N
Genera 18
«figura2,echo=F,[Link]='60%'»=
scatter3D(x=tb$x,y=tb$y,z=tb$z,cex=l.5,bty="b2",xlab="xl ",
ylab="y",zlab="z: x2",pch=l6,[Link]="# 9 9A69B")
@
Genera 19
195
196 CAPITULO 9. CREANDO REPORTES
«fig3,[Link]='70%',[Link]='Gráfico Likert',fig,pos='!hbt'»=
grafico3 <- ggplot(tab,aes_(x="",y=tab$Freq,fill=factor(tab$x3)))+
geom_bar(width = l,stat = "identity")+
Entrada 20
coord_polar("y")+
geom_text(aes(label=paste(round(Freq/sum(Freq)*100,1),"%")),
position=position_stack(vjust = 0.5))+
theme_void(base_size = 18)+labs(fill="Indicador")
#
grafico3
@
Genera 20
Indicador
| Nada Satisfecho
■ Poco Satisfecho
Satisfecho
Muy Satisfecho
Gráfico Likert
Por último plotrix con referencia \ref {fig: fig4}, al igual que el anterior
usar echo=FALSE para omitir codigo.
«fig4,[Link]='70%',[Link]='Gráfico Likert',[Link]='!hbt'»=
Entrada 21
196
197
3. LATEX
Importante:
Cuando se agrega argumentos en « »= trate usted de ha¬
cerlo en una sola linea continua, no use saltos de lineas.
« general,echo=F,[Link]="hold", [Link]="0.48\\textwidth",
[Link]="Todos los gráficos",[Link]=c("Uno","Dos",
"Tres","Cuatro"),[Link]=2,[Link]='!hbt' »=
Entrada 22
graficol
grafico3
#-
scatter3D(x=tb$x,y=tb$y,z=tb$z,cex=l.5,bty="b2",xlab="xl",
ylab="y",zlab="z: x2",pch=16,[Link]="#99A69B")
#-
[Link](x = tab$Freq,labels=[Link](tab$x3),
col = color,ticks = 30)
@
197
198 CAPITULO 9. CREANDO REPORTES
•
•
•.
• •
•-
. v •• • %• • •*
Indicador
V
• •• ••>
■ Nada Satisfecho
| Poco Satisfecho
Satisfecho
Muy Satisfecho
%• 1
• • • c •»
. ••• .
• •
-2-10 1 2
y
Genera 22
\ -6
Satisfecho
I
(c) Tres (d) Cuatro
198
199
3. LATEX
5.3.5 Bibliografías
Muchos de los usuarios de Rstudio afirman que no compila la bibliogra¬
fía y que para remediarlo usan otros softwares como es el caso de Texstu-
dio,Texmaker,Kile,TexitEasy y TeXnicCenter .
199
200 CAPITULO 9. CREANDO REPORTES
Document Document
Film
Linkto File...
Forum Post
Store Copy of File...
Hearing
More
Instant Message
Interview
Journal Article
Letter
Magazine Article
Manuscript
Map
Newspaper Article
Patent
Podcast
Presentaron
Una vez que tengamos todas las referencias a nuestra disposición, se procederá
a exportarlo a un fichero con un formato BibLatex
200
3. LATEX
201
_ bibliografí[Link] _
@book{latex_2004_companion,
tifie = {The {LaTeX} Companion},
isbn = {978-0-13-338764-3},
abstract = {This is the digial versión of the printed
pagetotal = {1121},
publisher = {Addison-Wesley Professional},
author = {Mittelbach, Frank and Goossens, Michel and Bra...},
date = {2004-04-23},
langid = {english},
note = {Google-Books-{ID}: {iX}9MAQAAQBAJ},
keywords = {Computers / Electronic Publishing}
}
201
202
CAPITULO 9. CREANDO REPORTES
Tiene que editar latex_2004_companion por otro mas simple, esta etiqueta es
muy importante porque con ese nombre vas a usar en
\citep{latex_2004_companion} (se ve muy enorme). Usaré uno mas corto
látex.2004
Incluir paquete
Incluimos este paquete llamado “biblatex” en el documento actual, es preferi¬
ble que se encuentre entre los últimos paquetes.
\documentclass[llpt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{csquotes} %-<—<--incluir
\usepackage[style=apa]{biblatex} %<--incluir
%-
\DeclareLanguageMapping{spanish}{spanish-apa}
Aquí es donde tienes que colocar la dirección del fichero bibliografí[Link] que
habías exportado de zotero.
\addbibresource{bibliografí[Link]}
\begin{document}
Entrada 23
\printbibliography %<-importante
\end{document}
Genera 23
202
3. LATEX
203
Como se observa se usa estas palabras “y col , pp”. Si deseas hacer cambios
en ella entonces presta atención a lo siguiente.
%- modificar-
\setcounter{smartand}{0}
\DefineBibliographyStrings{spanish}{%
andothers = {et al.
pages = {pag. },
Entrada 24
\begin{document}
\printbibliography %<-importante
\end{document}
Genera 24
203
204
CAPITULO 9. CREANDO REPORTES
\documentclass[ a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{graphicx,wrapfig}
\usepackage{microtype,float}
\usepackage[xllnames,table]{xcolor}
\usepackage{colortbl,makecell}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}
\DeclareLanguageMapping{spanish}{spanish-apa}
\addbibresource{bibliografí[Link]} %<- dirección fichero bi
%-modificar-
\setcounter{smartand}{0}
\DefineBibliographyStrings{spanish}{%
andothers = {et al.
pages = {pag. },
}
%-> vínculos
\usepackage{hyperre f}
204
205
3. LATEX
\newcommand{\tex}[1]{\textcolor{white}{\textbf{#1}}}
Q._
o-
% —> R librerías
<<echo=F,warning=FALSE,message=FALSE>>=
library(knitr)
library(kableExtra)
library(xtable)
options([Link] = FALSE)
library(ggplot2)
library(plotrix)
@
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\mainmatt e r
%====================== de aquí inicia
\section{H1}
\subsection{H2}
\subsubsection{H3}
205
206 CAPITULO 9. CREANDO REPORTES
\printbibliography[
heading=bibintoc,
title={Bibliografía}
]
\end{document}
206
o
h-5
£
H
'M
Oh
<
O
Referencias
1.1 Bibliografía
[1] Walter Mora F Alexánder Borbón A. Edición de textos científicos con LaTeX.
Composición, gráficos, diseño editorial y presentaciones beamer. 2nda. Revis¬
ta digital Matemática Educación e Internet, 2017. ISBN: 978-9977-66-227-5.
url: [Link]
[2] Winston Chang. R Graphics Cookbook: Practical Recipes for Visualizing Data.
Google-Books-ID: fxL4tu5bzAAC. .°’Reilly Media, Inc.", 6 de dic. de 2012.
414 págs. ISBN: 978-1-4493-6310-9.
[3] Dilip Datta. LaTeX in 24 Hours: A Practical Guidefor Scientific Writing. Sprin-
ger International Publishing, 2017. isbn: 978-3-319-47830-2. doi: 10.
1007/978-3-319-47831-9. URL: [Link]
9783319478302.
[4] Colin Gillespie y Robin Lovelace. EJficient R Programming: A Practical Guide
to Smarter Programming. Google-Books-ID: 8kWvDQAAQBAJ. .°’Reilly Media,
Inc.", 8 de dic. de 2016. 220 págs. ISBN: 978-1-4919-5075-3.
[5] Garrett Grolemund. Hands-On Programming with R: Write Your Own Fun-
ctions and Simulations. Google-Books-ID: S04BBAAAQBAJ. .°’Reilly Media,
Inc.", 13 de jun. de 2014. 249 págs. ISBN: 978-1-4493-5911-9.
[6] Nicholas J. Horton y Ken Kleinman. Using R and RStudiofor Data Manage¬
ment, StatisticalAnalysis, and Graphics. Google-Books-ID: WlG3BgAAQBAJ.
CRC Press, 10 de mar. de 2015. 280 págs. ISBN: 978-1-4822-3737-5.
207
208 CAPÍTULO 10. REFERENCIAS
[7] Robert Kabacoff. R in Action: Data Analysis and Graphics with R. Google-
Books-ID: aVnanAEACAAJ. Manning, 2015. 579 págs. ISBN: 978-1-61729-
138-8.
[8] Michael Lawrence y John Verzani. Programming Graphical User Interfaces
in R. Google-Books-ID: VeKEDwAAQBAJ. CRC Press, 14 de dic. de 2018.
481 págs. ISBN: 978-1-315-36051-5.
[9] Mark P. J. Van der Loo. Learning RStudiofor R Statistical Computing. Google-
Books-ID: EE8M9HCJok4C. Packt Publishing Ltd, 1 de ene. de 2012. 206 págs
ISBN: 978-1-78216-061-8.
208
Indice de cuadros
209
210
ÍNDICE DE CUADROS
210