bg(ft, bg = “midnightblue”, part = “header”): Resalta de color azul (midnightblue) el encabezado de la tabla.
color(ft, color = “white”, part = “header”): Escribe con color blanco el encabezado.
ft <- align(ft, j = c(1:3), align = “center”, part = “all” ): Centra las columnas uno, hasta la tres.
bold(ft, part = “header”): Resalta el encabezado
set_caption(ft, caption = “Primer Ejercicio”, autonum = run_autonum(seq_id =“tab”,pre_label = “Tabla”,bkm= “tab1”)) : Título a la tabla, pre_label: indica como deberá iniciar la tabla
ft <- add_footer_lines(ft, ‘Fuente: REDY’): Indica la fuente de elaboración de la tabla
ft <- flextable(Sub)
ft <- colformat_num(x = ft,
big.mark=".", decimal.mark = ",",
na_str = "N/A")
ft <- bg(ft, bg = "midnightblue", part = "header")
ft <- color(ft, color = "white", part = "header")
ft <- flextable::width(ft, width = 1)
ft <- flextable::align(ft, j = c(2:3), align = "center", part = "all" )
ft <- flextable::bold(ft, part = "header")
ft <- flextable::set_caption(ft, caption = "Primer Ejercicio", autonum = run_autonum(seq_id ="tab",pre_label = "Tabla ",bkm= "tab1"))
# Modificar líneas
big_border <- fp_border(color="black", style="solid", width=1)
ft <- hline_top(ft, part="all", border = big_border)
ft <- hline(ft, part="body", border = big_border)
ft <- border_inner(ft, border = big_border)
ft <- vline(ft, border = big_border )
ft <- vline_left(ft, border = big_border)
ft <- add_footer_lines(ft, 'Fuente: REDY')
ftAro | Bate | Drink |
|---|---|---|
Andalucia | h | 1 |
Andalucia | g | 5 |
Andalucia | h | 9 |
Fuente: REDY | ||
Si por el contrario, la plantilla de ese cuadro, se mantendrá a lo largo del documento, y con el objetivo de no copiar y pegar toda la rutina, podremos generar la siguiente función.
table <- height(table, height = .20, part=‘footer’) table <- hrule(table, rule = “exact”, part = ‘footer’)
make.flextable <- function(data) {
table <- flextable(data)
table <- colformat_num(x = table,
big.mark=".", decimal.mark = ",",
na_str = "N/A")
# Modificar líneas
big_border <- fp_border(color="black", style="solid", width=1)
table <- hline_top(table, part="all", border = big_border)
table <- hline(table, part="body", border = big_border)
table <- border_inner(table, border = big_border)
table <- vline(table, border = big_border )
table <- vline_left(table, border = big_border)
table <- bg(table, bg = "midnightblue", part = "header")
table <- color(table, color = "white", part = "header")
table <- flextable::width(table, width = 1)
table <- flextable::align(table, j = c(2:3), align = "center", part = "all" )
table <- flextable::bold(table, part = "header")
#Fuente
table <- flextable::add_footer_lines(table, "Fuente: Redy")
#Tipo de Letra
table <- flextable::font(table, fontname = "Calibri", part = "all")
table <- flextable::fontsize(table, size = 11, part = "all")
#Footer
table <- flextable::font(table, fontname = "Calibri", part = "footer")
table <- flextable::fontsize(table, size = 9, part = "footer")
#Distancia de la fuente
table <- flextable::height(table, height = .20, part='footer')
table <- flextable::hrule(table, rule = "exact", part = 'footer')
return(autofit(table))
} y al aplicar aspectos específicos en la rutina, se agrega de la siguiente manera:
ft <- flextable::bold(ft, i= 2): Esta opción permite resaltar la fila tercera.
ft <- make.flextable(Sub)
ft <- flextable::set_caption(ft, caption = "Tabla No2", autonum = run_autonum(seq_id ="tab",pre_label = "Tabla ",bkm= "tab2"))
ft <- flextable::bold(ft, i= 2)
ftAro | Bate | Drink |
|---|---|---|
Andalucia | h | 1 |
Andalucia | g | 5 |
Andalucia | h | 9 |
Fuente: Redy | ||
Si por el contrario, queremos ajustar la tabla de acuerdo a nuestros propios límites, corremos la siguiente rutina.
ft <- make.flextable(Sub)
#ft <- set_table_properties(ft, width = .8, layout = "autofit")
ft <- flextable::width(ft, j = c(1,2,3), width = c(1.5,0.5, 0.5))
ft <- flextable::align(ft, j = c(2:3), align = "center", part = "all" )
ft <- flextable::height_all(ft, height = .50)
ft <- flextable::hrule(ft, rule = "exact", part = "all")
ft <- flextable::set_caption(ft, caption = "Tabla No3: Ajustes Propios", autonum = run_autonum(seq_id ="tab",pre_label = "Tabla ",bkm= "tab13"))
ft <- flextable::bold(ft, i= 2)
ftAro | Bate | Drink |
|---|---|---|
Andalucia | h | 1 |
Andalucia | g | 5 |
Andalucia | h | 9 |
Fuente: Redy | ||
En esta sección analizaremos cómo combinar la información de filas que se repiten dentro de una columna.
df <- make.flextable_Two(df)
df <- flextable::merge_at(df, i=2:3, j=2)
df <- flextable::merge_at(df, i=4:7, j=2)
df <- flextable::bold(df,part = "header")
dfVAR | BAR |
|---|---|
AA | Auto |
BB | Bus |
CC | |
DD | Barco |
EE | |
FF | |
GG | |
Fuente: Redy | |
make.flextable_AV <- function(data) {
table <- flextable(data)
table <- colformat_num(x = table,
big.mark=".", decimal.mark = ",",
na_str = "N/A")
# Modificar líneas
big_border <- fp_border(color="black", style="solid", width=1)
table <- hline_top(table, part="all", border = big_border)
table <- hline(table, part="body", border = big_border)
table <- border_inner(table, border = big_border)
table <- vline(table, border = big_border )
table <- vline_left(table, border = big_border)
table <- bg(table, bg = "midnightblue", part = "header")
table <- color(table, color = "white", part = "header")
table <- flextable::width(table, width = 1)
table <- flextable::align(table, j = c(2:3), align = "center", part = "all" )
table <- flextable::bold(table, part = "header")
#Fuente
table <- flextable::add_footer_lines(table, "Fuente: Redy")
#Tipo de Letra
table <- flextable::font(table, fontname = "Calibri", part = "all")
table <- flextable::fontsize(table, size = 11, part = "all")
#Footer
table <- flextable::font(table, fontname = "Calibri", part = "footer")
table <- flextable::fontsize(table, size = 9, part = "footer")
#Distancia de la fuente
table <- flextable::height(table, height = .20, part='footer')
table <- flextable::hrule(table, rule = "exact", part = 'footer')
AA <- nrow(data)
table <- flextable::bold(table, i=AA)
table <- flextable::bg(table, i=AA, bg="midnightblue",
part="body")
table <- flextable::color(table, i=AA, color="white",
part="body")
return(table)
}ft <- make.flextable_AV (JJ)
ftAro | Bate | Drink |
|---|---|---|
Casa | g | 8 |
Casa | f | 5 |
Casa | h | 10 |
Casa | g | 11 |
Fuente: Redy | ||
En esta sección aprenderemos como ajustar el título a nuestra tabla, de acuerdo a nuestros requerimientos.
ft <- make.flextable(Avispas)
ft <- flextable::set_caption(ft, caption= as_paragraph(as_chunk("Titulazo",
props = fp_text_default(font.family = "Calibri", bold=TRUE, color="darkblue",
font.size = 10))))
ftArbol | Raiz | Hoja |
|---|---|---|
c | f | 1 |
a | f | 3 |
c | g | 5 |
b | g | 4 |
b | g | 2 |
Fuente: Redy | ||
Aprenderemos a automatizar títulos de la siguiente manera:
fecha_corte <- dmy("31-10-2022")
fecha_anterior <- dmy("30-09-2022")
Fecha_A <- paste0(gsub(".","", str_to_title(as.character(fecha_corte,
format="%B")),
fixed=T))
Fecha_B <- paste0(gsub(".","", str_to_title(as.character(fecha_anterior,
format="%B")),
fixed=T))
ft <- make.flextable(Avispas)
ft <- flextable::set_caption(ft, caption=
as_paragraph(as_chunk(paste0("Comparación ",Fecha_A,"-",Fecha_B, " ", 2022),props = fp_text_default(font.family = "Calibri", bold=TRUE,
font.size = 10))))
ftArbol | Raiz | Hoja |
|---|---|---|
c | f | 1 |
a | f | 3 |
c | g | 5 |
b | g | 4 |
b | g | 2 |
Fuente: Redy | ||
En esta sección, aplicaremos sangría a distintas filas de nuestra tabla. Para aquello, invocaremos al siguiente comando padding
ag <- flextable(af)
ag <- padding(ag, i=c(2,4,6,8), j=1, padding.left = 15)
agname | sex | year |
|---|---|---|
Taiwan | M | 1,984 |
Mareo | M | 1,983 |
Ma | F | 1,992 |
Carold | M | 1,920 |
Bernadine | F | 1,946 |
Norman | M | 2,013 |
Tarick | M | 1,975 |
Adanna | F | 2,002 |
Continuando con la tabla anterior, ajustaremos el ancho de las filas
ab <- make.flextable_Two(af)
ab <- flextable::height(ab,height = 0.8)
ab <- line_spacing(i=c(1,3,5,7),ab,space = 0.30, part= "body")
ab <- line_spacing(i=c(2,4,6), ab,space = 0.80, part= "body")
abname | sex | year |
|---|---|---|
Taiwan | M | 1.984 |
Mareo | M | 1.983 |
Ma | F | 1.992 |
Carold | M | 1.920 |
Bernadine | F | 1.946 |
Norman | M | 2.013 |
Tarick | M | 1.975 |
Adanna | F | 2.002 |
Fuente: Redy | ||
Para evitar que las tablas tengan espacios en la parte superior e inferior de la misma, se deberá aplicar la siguiente rutina.
abl <- make.flextable_Two(af)
abl <- flextable::padding(abl,padding.top = 0, part = "body")%>%
flextable::padding(padding.bottom = 0, part = "body")
ablname | sex | year |
|---|---|---|
Taiwan | M | 1.984 |
Mareo | M | 1.983 |
Ma | F | 1.992 |
Carold | M | 1.920 |
Bernadine | F | 1.946 |
Norman | M | 2.013 |
Tarick | M | 1.975 |
Adanna | F | 2.002 |
Fuente: Redy | ||