
Vamos a cargar la base de datos
library(readxl)
dbdraastrid <- read_excel("E:/OneDrive - CINVESTAV/PROYECTO MDatos/TRABAJOS/Dra Astrid Hernandez Hosp PEMEX MDatos/dbdraastrid.xlsx")
dbastrid<-dbdraastrid
head(dbastrid)
## # A tibble: 6 × 7
## `Nombre del paciente` Ficha Edad Sexo `PCR SARS CoV-2` `CFS (Rockwood)`
## <chr> <chr> <dbl> <chr> <chr> <dbl>
## 1 GRACIELA GARCIA GUZMAN 5633… 60 F si 3
## 2 FRANCISCO JAVIER VEGA ROD… 6107… 64 M si 1
## 3 CELIA COBOS SIFUENTES 1890… 79 F si 6
## 4 MARIA ISABEL FERNANDEZ GO… 0840… 67 F si 5
## 5 SERGIO VIZCAINO MARTINEZ … 1808… 60 M si 2
## 6 FABIAN BALDERAS LOPEZ 2079… 60 M si 2
## # ℹ 1 more variable: Fallecieron <chr>
str(dbastrid)
## tibble [568 × 7] (S3: tbl_df/tbl/data.frame)
## $ Nombre del paciente: chr [1:568] "GRACIELA GARCIA GUZMAN" "FRANCISCO JAVIER VEGA RODRIGUEZ" "CELIA COBOS SIFUENTES" "MARIA ISABEL FERNANDEZ GONZALEZ**" ...
## $ Ficha : chr [1:568] "563313-00" "610734-00" "189038-00" "084001-00" ...
## $ Edad : num [1:568] 60 64 79 67 60 60 89 87 76 64 ...
## $ Sexo : chr [1:568] "F" "M" "F" "F" ...
## $ PCR SARS CoV-2 : chr [1:568] "si" "si" "si" "si" ...
## $ CFS (Rockwood) : num [1:568] 3 1 6 5 2 2 7 5 6 5 ...
## $ Fallecieron : chr [1:568] "Si" "Si" "Si" "Si" ...
length(dbastrid$Sexo)
## [1] 568
unique(dbastrid$Sexo)
## [1] "F" "M" "m" NA
unique(dbastrid$Fallecieron)
## [1] "Si" "No"
##ANALISIS EXPLORATORIO CON EDAD Y GENERO
#cargamos paquetes requeridos:
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggpubr)
gghistogram(dbastrid, x="Edad", fill="#0073C2FF", bins = 30, color = "#0073C2FF",
add = "median", rug = TRUE)
## Warning: `geom_vline()`: Ignoring `mapping` because `xintercept` was provided.
## Warning: `geom_vline()`: Ignoring `data` because `xintercept` was provided.
## Warning: Removed 4 rows containing non-finite values (`stat_bin()`).

#para resolver este eror usamos la siguiente función
# Utilizamos la función subset() para filtrar el DataFrame y quedarnos solo con los valores "F" y "M"
dbastrid <- subset(dbastrid, Sexo %in% c("F", "M"))
gghistogram(dbastrid, x = "Edad", y = "count",ylab = "conteo",xlab = "Edad", title="Distribución de la Edad por Sexo población total", bins = 30, panel.labs = list(SEXO = c("F", "M")),
add = "median", rug = TRUE,add_density = TRUE,
color = "Sexo", fill = "Sexo")

#vamos a hacerlo ahora con un boxplot
ggboxplot(dbastrid, x = "Sexo", y = "Edad",ylab = "Edad años",xlab = "Sexo", title="Distribución de la Edad por Sexo población total",add_density = TRUE,
color = "black", fill = "Sexo",
palette = c("#0073C2FF", "#FC4E07"))

dbastrid$Fallecieron <- factor(dbastrid$Fallecieron, levels = c("Si", "No"), labels = c("No sobrevivieron", "Sobrevivieron"))
# Crea el gráfico con la prueba de U de Mann-Whitney o Wilcoxon
ggplot(dbastrid, aes(x = Sexo, y = Edad, color = Sexo)) +
stat_summary(fun = "median", geom = "errorbar", width = 0.2, size = 1.5, color = "black") +
geom_jitter(position = position_jitter(0.2), size = 3) +
stat_summary(fun.y = median, geom = "point") +
stat_summary(fun.y = median, fun.ymin = median, fun.ymax = median, geom = "crossbar", width = 0.5, color = "black") +
stat_compare_means(comparisons = list(c("F", "M")), method = "wilcox.test", label = "p.signif") +
facet_wrap(~ Fallecieron, nrow = 1, ncol = 2) +
theme_minimal() +
theme(
strip.text = element_text(face = "bold", size = 12),
axis.text.x = element_text(size = 12,color="black"),
axis.text.y = element_text(size = 12, color="black"),
axis.title.y = element_text(face="bold", size= 12),
axis.title.x = element_text(face="bold", size= 12),
axis.title = element_text(face="bold", size= 50),
) +
labs(
x = element_blank(), # Para eliminar el título del eje x
y = "Edad (años)", # Etiqueta del eje y
color = "",
title = "Distribución de edad entre pacientes que sobrevivieron y no sobrevivieron",
subtitle = "",
caption = "La línea horizontal (Negra) representa a la mediana"
)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `fun.y` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.
## ℹ Please use the `fun` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `fun.ymin` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.
## ℹ Please use the `fun.min` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `fun.ymax` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.
## ℹ Please use the `fun.max` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

library(ggsignif)
#solo mortalidad o pacientes que no sobrevivieron
dbastridns <- dbastrid %>% filter(Fallecieron != "sobrevivieron")
# Crea el gráfico con la prueba de U de Mann-Whitney o Wilcoxon
ggplot(dbastridns, aes(x = Sexo, y = Edad, color = Sexo)) +
stat_summary(fun = "median", geom = "errorbar", width = 0.2, size = .5, color = "black") +
geom_jitter(position = position_jitter(0.2), size = 1.5) +
stat_summary(fun.y = median, geom = "point") +
stat_summary(fun.y = median, fun.ymin = median, fun.ymax = median, geom = "crossbar", width = 0.5, color = "black") +
stat_compare_means(comparisons = list(c("F", "M")), method = "wilcox.test", label = "p.signif") +
facet_wrap(~ `CFS (Rockwood)`) +
theme_minimal() +
theme(
strip.text = element_text(face = "bold", size = 12),
axis.text.x = element_text(size = 12,color="black"),
axis.text.y = element_text(size = 12, color="black"),
axis.title.y = element_text(face="bold", size= 12),
axis.title.x = element_text(face="bold", size= 12),
axis.title = element_text(face="bold", size= 50),
) +
labs(
x = element_blank(), # Para eliminar el título del eje x
y = "Edad (años)", # Etiqueta del eje y
color = "",
title = "Distribución de edad entre pacientes que no sobrevivieron",
subtitle = "CFS (Rockwood):",
caption = "La línea horizontal (Negra) representa a la mediana"
)

dbastrids <- dbastrid %>% filter(Fallecieron != "No sobrevivieron")
# Crea el gráfico con la prueba de U de Mann-Whitney o Wilcoxon
ggplot(dbastrids, aes(x = Sexo, y = Edad, color = Sexo)) +
stat_summary(fun = "median", geom = "errorbar", width = 0.2, size = .5, color = "black") +
geom_jitter(position = position_jitter(0.2), size = 1.5) +
stat_summary(fun.y = median, geom = "point") +
stat_summary(fun.y = median, fun.ymin = median, fun.ymax = median, geom = "crossbar", width = 0.5, color = "black") +
stat_compare_means(comparisons = list(c("F", "M")), method = "wilcox.test", label = "p.signif") +
facet_wrap(~ `CFS (Rockwood)`) +
theme_minimal() +
theme(
strip.text = element_text(face = "bold", size = 12),
axis.text.x = element_text(size = 12,color="black"),
axis.text.y = element_text(size = 12, color="black"),
axis.title.y = element_text(face="bold", size= 12),
axis.title.x = element_text(face="bold", size= 12),
axis.title = element_text(face="bold", size= 50),
) +
labs(
x = element_blank(), # Para eliminar el título del eje x
y = "Edad (años)", # Etiqueta del eje y
color = "",
title = "Distribución de edad entre pacientes que sobrevivieron",
subtitle = "CFS (Rockwood):",
caption = "La línea horizontal (Negra) representa a la mediana"
)

# Carga la biblioteca necesaria
library(dplyr)
# Filtrar los datos para los pacientes que "Sobrevivieron"
sobrevivieron_data <- dbastrid %>% filter(Fallecieron == "Sobrevivieron")
# Filtrar los datos para los pacientes que "No Sobrevivieron"
no_sobrevivieron_data <- dbastrid %>% filter(Fallecieron != "Sobrevivieron")
# Realizar la prueba de Wilcoxon-Mann-Whitney para los pacientes que "Sobrevivieron"
wilcox_sobrevivieron <- wilcox.test(Edad ~ Sexo, data = sobrevivieron_data)
# Realizar la prueba de Wilcoxon-Mann-Whitney para los pacientes que "No Sobrevivieron"
wilcox_no_sobrevivieron <- wilcox.test(Edad ~ Sexo, data = no_sobrevivieron_data)
# Calcular la diferencia entre medianas para cada grupo
diferencia_medianas_sobrevivieron <- abs(median(sobrevivieron_data$Edad[sobrevivieron_data$Sexo == "F"]) -
median(sobrevivieron_data$Edad[sobrevivieron_data$Sexo == "M"]))
diferencia_medianas_no_sobrevivieron <- abs(median(no_sobrevivieron_data$Edad[no_sobrevivieron_data$Sexo == "F"]) -
median(no_sobrevivieron_data$Edad[no_sobrevivieron_data$Sexo == "M"]))
# Crear una tabla con los resultados
resultados_tabla <- data.frame(comparación = c("F vs. M", "F vs. M"),
Grupo = c("Sobrevivieron", "No Sobrevivieron"),
Valor_de_p = c(wilcox_sobrevivieron$p.value, wilcox_no_sobrevivieron$p.value),
Diferencia_estadistica = c(wilcox_sobrevivieron$statistic, wilcox_no_sobrevivieron$statistic),
Diferencia_medianas = c(diferencia_medianas_sobrevivieron, diferencia_medianas_no_sobrevivieron))
# Imprimir la tabla
print(resultados_tabla)
## comparación Grupo Valor_de_p Diferencia_estadistica
## 1 F vs. M Sobrevivieron 0.39504276 14247
## 2 F vs. M No Sobrevivieron 0.07500113 7045
## Diferencia_medianas
## 1 2
## 2 4
library(gtsummary)
dbastrid %>% select(Edad, Sexo, Fallecieron) %>% tbl_summary(by=Fallecieron) %>% add_overall()
| Characteristic |
Overall, N = 563 |
No sobrevivieron, N = 224 |
Sobrevivieron, N = 339 |
| Edad |
68 (64, 77) |
72 (65, 81) |
67 (63, 72) |
| Sexo |
|
|
|
| F |
253 (45%) |
125 (56%) |
128 (38%) |
| M |
310 (55%) |
99 (44%) |
211 (62%) |
Ahora vamos a explorar la variable Rockwood
# Crea un dataframe con el conteo y porcentaje de CFS (Rockwood)
df <- dbastrid %>%
group_by(`CFS (Rockwood)`) %>%
summarise(Count = n(), .groups = 'drop') %>%
mutate(Percentage = Count / sum(Count))
# Crea el gráfico de barras
ggplot(df, aes(x=`CFS (Rockwood)`, y=Count)) +
geom_bar(stat="identity", fill="#69b3a2") +
geom_text(aes(label=Count), vjust=-0.2, color="black") +
geom_text(aes(label=paste0("(", scales::percent(Percentage), ")")), vjust=1.2, color="black") +
theme_minimal() +
labs(x="CFS (Rockwood)", y="Conteo", title="Distribución de CFS (Rockwood)") +
scale_x_continuous(breaks = 1:10)+theme_minimal() +
theme(
strip.text = element_text(face = "bold", size = 12),
axis.text.x = element_text(size = 12,color="black"),
axis.text.y = element_text(size = 12, color="black"),
axis.title.y = element_text(face="bold", size= 12),
axis.title.x = element_text(face="bold", size= 12),
axis.title = element_text(face="bold", size= 50),
)

# Crea un dataframe con el conteo y porcentaje de CFS (Rockwood) agrupado por Fallecieron
df <- dbastrid %>%
group_by(`CFS (Rockwood)`, Fallecieron) %>%
summarise(Count = n(), .groups = 'drop') %>%
mutate(Percentage = Count / sum(Count))
# Crea un dataframe con el conteo de CFS (Rockwood) agrupado por Fallecieron
df <- dbastrid %>%
group_by(`CFS (Rockwood)`, Fallecieron) %>%
summarise(Count = n(), .groups = 'drop')
# Realiza la prueba de chi-cuadrada
chisq_result <- chisq.test(df$Count)
# Crea el gráfico de barras
ggplot(df, aes(x=`CFS (Rockwood)`, y=Count, fill=Fallecieron)) +
geom_bar(stat="identity", position="dodge") +
theme_minimal() +
labs(x="CFS (Rockwood)", y="Count", title="Distribución de CFS (Rockwood) Agrupado por Fallecieron") +
scale_x_continuous(breaks = 1:11) +
annotate("text", x=5, y=max(df$Count), label=paste("p-value =", round(chisq_result$p.value, digits=3)), size=5, color="black")

# Crea una tabla de contingencia
contingency_table <- table(dbastrid$`CFS (Rockwood)`, dbastrid$Fallecieron)
# Realiza la prueba de chi-cuadrado
chi_test <- chisq.test(contingency_table)
# Crea un dataframe con el conteo de CFS (Rockwood) agrupado por Fallecieron
df <- dbastrid %>%
group_by(`CFS (Rockwood)`, Fallecieron) %>%
summarise(Count = n(), .groups = 'drop')
# Crea el gráfico de barras
p <- ggplot(df, aes(x=`CFS (Rockwood)`, y=Count, fill=Fallecieron)) +
geom_bar(stat="identity", position="dodge") +
theme_minimal() +
labs(x="CFS (Rockwood)", y="Count", title="Distribución de CFS (Rockwood) Agrupado por Fallecieron") +
scale_x_continuous(breaks = 1:11)
# Agrega el valor p al gráfico
p + annotate("text", x=5, y=max(df$Count), label=paste("p-value =", round(chi_test$p.value, digits=3)), size=5, color="black")

library(dplyr)
library(ggplot2)
library(scales)
##
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
##
## discard
## The following object is masked from 'package:readr':
##
## col_factor
library(purrr)
library(rstatix)
##
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
##
## filter
library(RColorBrewer)
# Crea una tabla de contingencia
contingency_table <- table(dbastrid$`CFS (Rockwood)`, dbastrid$Fallecieron)
# Realiza la prueba de chi-cuadrado
chi_test <- chisq.test(contingency_table)
# Crea un dataframe con el conteo de CFS (Rockwood) agrupado por Fallecieron
df <- dbastrid %>%
group_by(`CFS (Rockwood)`, Fallecieron) %>%
summarise(Count = n(), .groups = 'drop')
# Crea el gráfico de barras
p <- ggplot(df, aes(x=`CFS (Rockwood)`, y=Count, fill=Fallecieron)) +
geom_bar(stat="identity", position="dodge") +
scale_fill_brewer(palette="Set1") +
theme_minimal() +
labs(x="CFS (Rockwood)", y="Conteo", title="Distribución de CFS (Rockwood) Agrupado por Fallecieron", fill=" ") +
scale_x_continuous(breaks = 1:9)
# Agrega el valor p al gráfico
p_value_text <- ifelse(chi_test$p.value < 0.0001, "<0.0001", round(chi_test$p.value, digits=3))
p <- p + annotate("text", x=8, y=max(df$Count), label=paste("p =", p_value_text), size=5, color="black")
# Realiza pruebas de chi-cuadrado entre cada uno de los elementos de "CFS (Rockwood)" agrupados por "Fallecieron"
p_values <- map_dbl(1:9, function(i) {
contingency_table_i <- table(dbastrid$`CFS (Rockwood)` == i, dbastrid$Fallecieron)
chisq.test(contingency_table_i)$p.value
})
# Ajusta los valores p para las comparaciones múltiples
p_values_adjusted <- p.adjust(p_values, method = "bonferroni")
# Agrega asteriscos al gráfico según la significancia
for (i in 1:9) {
significance <- case_when(
p_values_adjusted[i] < 0.001 ~ "***",
p_values_adjusted[i] < 0.01 ~ "**",
p_values_adjusted[i] < 0.05 ~ "*",
TRUE ~ ""
)
p <- p + annotate("text", x=i, y=max(df$Count[df$`CFS (Rockwood)` == i]), label=significance, size=8, color="black")
}
# Agrega una leyenda al gráfico
p <- p + labs(caption = "Prueba de chi-cuadrado. Significancias: '***' p<0.001, '**' p<0.01, '*' p<0.05")
# Muestra el gráfico
print(p)

library(gtsummary)
dbastrid %>% select(`CFS (Rockwood)`,Fallecieron) %>% tbl_summary(by=Fallecieron)%>% add_p() %>% add_overall()
| Characteristic |
Overall, N = 563 |
No sobrevivieron, N = 224 |
Sobrevivieron, N = 339 |
p-value |
| CFS (Rockwood) |
|
|
|
<0.001 |
| 1 |
57 (10%) |
7 (3.1%) |
50 (15%) |
|
| 2 |
98 (17%) |
33 (15%) |
65 (19%) |
|
| 3 |
64 (11%) |
24 (11%) |
40 (12%) |
|
| 4 |
65 (12%) |
26 (12%) |
39 (12%) |
|
| 5 |
89 (16%) |
41 (18%) |
48 (14%) |
|
| 6 |
57 (10%) |
27 (12%) |
30 (8.8%) |
|
| 7 |
73 (13%) |
42 (19%) |
31 (9.1%) |
|
| 8 |
38 (6.7%) |
16 (7.1%) |
22 (6.5%) |
|
| 9 |
22 (3.9%) |
8 (3.6%) |
14 (4.1%) |
|
pruebas adicionales de hipótesis con los datos disponibles. Una
opción sería calcular la Odds Ratio (OR), también conocida como la Razón
de Momios, para comparar la proporción de pacientes que fallecieron y
que no fallecieron en cada grupo de la Escala de Fragilidad Clínica de
Rockwood (CFS).
Para calcular la OR, podríamos usar un modelo de regresión
logística, que es una técnica estadística que permite estimar la
probabilidad de un evento binario (como fallecer o no) en función de una
o más variables predictoras. En este caso, la variable predictora sería
la categoría de la escala CFS.
Además, podríamos calcular el Intervalo de Confianza del 95% para la
OR, que proporciona un rango de valores que es probable que incluya el
verdadero valor de la OR en la población general. Si el Intervalo de
Confianza no incluye 1, eso sugeriría que la diferencia en las
proporciones es estadísticamente significativa.
Por último, podríamos ajustar el modelo de regresión logística por
otras variables que podrían confundir la relación entre la escala CFS y
la mortalidad, como la edad y el sexo. Esto nos permitiría estimar el
efecto de la escala CFS en la probabilidad de fallecer, manteniendo
constantes otras variables.
Por lo tanto, hay varias pruebas de hipótesis y análisis adicionales
que podríamos realizar con estos datos para obtener una comprensación
más profunda de la relación entre la fragilidad clínica y la mortalidad
en esta población de pacientes geriátricantes.
# Asegúrate de tener instalados los paquetes necesarios
# install.packages(c("tidyverse", "broom", "gtsummary"))
# Carga las bibliotecas necesarias
library(broom)
library(gtsummary)
# Convierte la columna 'Fallecieron' a un formato binario
# Asume que 'Si' significa que el paciente falleció y 'No' que sobrevivió
dbastridrl <- dbastrid %>% mutate(Fallecieron = ifelse(Fallecieron == 'No Sobrevivieron', 0, 1),Sexo = ifelse(Sexo == 'F', 1, 0))
# Convierte la columna 'Sexo' a un formato binario
# Asume que 'F' significa femenino y 'M' masculino
#dbastridrl <- dbastrid %>% mutate(Sexo = ifelse(Sexo == 'F', 1, 0))
# Ajusta un modelo de regresión logística que predice 'Fallecieron' a partir de 'CFS (Rockwood)', 'Edad' y 'Sexo'
# Tratamos 'CFS (Rockwood)' como un factor para obtener la OR para cada nivel de la variable
model <- glm(Fallecieron ~ Edad + Sexo+ as.factor(`CFS (Rockwood)`), data = dbastrid, family = binomial())
# Obtiene las odds ratios y sus intervalos de confianza del 95%
results <- broom::tidy(model, conf.int = TRUE, exponentiate = TRUE)
# Crea una tabla de resumen utilizando el paquete gtsummary
summary_table <- gtsummary::tbl_regression(model, exponentiate = TRUE)
summary_table
| Characteristic |
OR |
95% CI |
p-value |
| Edad |
0.93 |
0.91, 0.96 |
<0.001 |
| Sexo |
|
|
|
| F |
— |
— |
|
| M |
1.93 |
1.34, 2.79 |
<0.001 |
| as.factor(`CFS (Rockwood)`) |
|
|
|
| 1 |
— |
— |
|
| 2 |
0.27 |
0.10, 0.64 |
0.005 |
| 3 |
0.24 |
0.08, 0.60 |
0.003 |
| 4 |
0.27 |
0.10, 0.69 |
0.009 |
| 5 |
0.20 |
0.07, 0.47 |
<0.001 |
| 6 |
0.27 |
0.09, 0.71 |
0.010 |
| 7 |
0.22 |
0.08, 0.56 |
0.002 |
| 8 |
0.37 |
0.12, 1.10 |
0.079 |
| 9 |
0.68 |
0.19, 2.44 |
0.6 |
fp<-tbl_regression(model, exponentiate = TRUE)
library(bstfun)
##
## Attaching package: 'bstfun'
## The following object is masked from 'package:rstatix':
##
## get_mode
## The following object is masked from 'package:gtsummary':
##
## trial
## The following object is masked from 'package:ggpubr':
##
## as_ggplot
# Convierte la columna 'Fallecieron' a un formato binario
# Asume que 'Si' significa que el paciente falleció y 'No' que sobrevivió
#dbastridrlfp <- dbastrid %>% mutate(Fallecieron = ifelse(Fallecieron == 'No Sobrevivieron', 0, 1),Sexo = ifelse(Sexo == 'F', 1, 0))
# Ajusta un modelo de regresión logística que predice 'Fallecieron' a partir de 'CFS (Rockwood)', 'Edad' y 'Sexo'
# Tratamos 'CFS (Rockwood)' como un factor para obtener la OR para cada nivel de la variable
modelfp <- glm(Fallecieron ~ Edad + Sexo+ as.factor(`CFS (Rockwood)`), data = dbastrid, family = binomial())
# Crea una tabla de resumen utilizando el paquete gtsummary
summary_tablefp <- tbl_regression(modelfp, exponentiate = TRUE)
as_forest_plot(summary_tablefp,col_names = c("estimate","ci", "p.value"))

summary_tablefp$tabl
## NULL