es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo añadir dos tablas con el mismo número de columnas en kableExtra?

Estoy intentando crear una tabla grande agregando varias tablas pequeñas con el mismo número de columnas utilizando kableExtra. Específicamente, supongamos que tengo los siguientes conjuntos de datos y kables:

“`{r}
library(kableExtra)

df1 <- data.frame(x = c("a","b"), y=1:2)
df2 <- data.frame(x = c("c","d"), y=3:4)

k1 <- kable(df1, format = 'latex') |>
add_header_above(c("Header 1 " = 2))

k2 <- kable(df2, format = 'latex') |>
add_header_above(c("Header 2" = 2))

<pre><code><br />Me gustaría unir k1 y k2 en la misma tabla, obteniendo como resultado:

“`{latex}
\begin{tabular}{l|r}
\hline
\multicolumn{2}{c}{Header 1 } \\
\cline{1-2}
x & y\\
\hline
a & 1\\
\hline
b & 2\\
\hline
\multicolumn{2}{c}{Header 2} \\
\cline{1-2}
x & y\\
\hline
c & 3\\
\hline
d & 4\\
\hline
\end{tabular}

Esto se traduciría en:
Tabla

Sin embargo, no me gustaría unir los data frames, ya que provienen de diferentes agrupaciones. ¿Alguien puede ayudarme?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para combinar las dos kables en una tabla grande sin unir los data frames, puedes usar la función bind_rows() del paquete dplyr para combinar los data frames, y luego usar kable() y add_header_above() para crear la tabla con encabezados.

    Aquí tienes un ejemplo:

    “`{r}
    library(dplyr)

    df_combined <- bind_rows(df1, df2) # combinar los data frames

    k_combined <- kable(df_combined, format = 'latex') %>%
    add_header_above(c(“Encabezado 1” = 2, “Encabezado 2” = 2)) # agregar los encabezados

    k_combined # imprimir la tabla


    Esto te dará la salida deseada: ```{latex} \begin{tabular}{l|r} \hline \multicolumn{2}{c}{Encabezado 1 } \\ \cline{1-2} x & y \\ \hline a & 1 \\ b & 2 \\ \hline \multicolumn{2}{c}{Encabezado 2} \\ \cline{1-2} x & y \\ \hline c & 3 \\ d & 4 \\ \hline \end{tabular}

    Y la tabla se verá así:

    Tabla

Comments are closed.