0

I am creating a summary statistics table using the apistrat data with the output as a table in R (hoping to eventually format with flextable). I am hoping to manipulate the table so the standard error of each variable appears directly below the mean/median value I've collected. Here's an example:

dstrata <- apistrat %>%
  as_survey_design(strata = stype, weights = pw) 

dstrata <- dstrata %>%
  mutate(api_diff = api00 - api99) 

dstrata %>%
  summarise(api_diff = survey_mean(api_diff, vartype="se" )) 

api_diff api_diff_se
     <dbl>       <dbl>
1     32.9        2.08 

#so as you can see now, the standard error appears as its own column. Is there a way to reformat the table so it appears like this? 

   api_diff 
     <dbl>       
1     32.9 
     (2.08) 
 

Once it's in this form, how can I transpose it to appear as a flextable? Whenever I try to do so I receive the following error:

> table=flextable(dstrata)
Error in flextable(dstrata) : is.data.frame(data) is not TRUE 

Thank you!

juliah0494
  • 175
  • 11

1 Answers1

2

Something liike that:

library(flextable)
library(srvyr)
library(survey)
library(dplyr)
data(api)

# stratified sample
dstrata <- apistrat %>%
  as_survey_design(strata = stype, weights = pw)

dstrata <- dstrata %>%
  mutate(api_diff = api00 - api99) 

dat <- dstrata %>%
  summarise(api_diff = survey_mean(api_diff, vartype="se" )) 

flextable(dat, col_keys = "api_diff") %>% 
  compose(j = 1, value = as_paragraph(api_diff, " (", api_diff_se, ")")) %>% 
  autofit()

enter image description here

David Gohel
  • 9,180
  • 2
  • 16
  • 34