The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
mldesc() (for any method, including
"bayes") returns a tibble that can be printed in three
formats: a console-friendly default, a tinytable
object, and a gt object. This vignette shows how to
move from the default output to a fully-customised, journal-ready
table.
We use media_diary, a simulated daily diary dataset
included with mlstats (100 participants over 14 days;
N = 100 persons, T = 1,400 daily observations). See
?media_diary for details.
Simply printing the result gives a compact console-friendly view:
result
#> # Multilevel Descriptive Statistics
#> ============ ===== ====== ===== ========= ===== ===== ===== ===== ===== =====
#> variable n_obs m sd range `1` `2` `3` `4` `5` icc
#> ------------ ----- ------ ----- --------- ----- ----- ----- ----- ----- -----
#> 1 Self control 100 4.03 0.83 1.60–5.80 – NA NA NA NA 1.00
#> 2 Wellbeing 1,400 4.45 0.87 1.50–6.90 .61* – .42* -.43* .45* .46
#> 3 Screen time 1,400 128.66 42.29 0–272 -.67* -.34* – .29* .57* .45
#> 4 Stress 1,400 3.81 0.91 1–7 -.53* -.38* .38* – .05* .33
#> 5 Enjoyment 1,400 4.44 0.79 2–7 -.18 -.21* .22* .25* – .44
#> ============ ===== ====== ===== ========= ===== ===== ===== ===== ===== =====
#> # ℹ Within-person correlations above, between-person correlations below the
#> # diagonal.
#> # ℹ All correlations marked with a star are significant at p < .05.
#> # ℹ Correlations estimated via variance decomposition.
#> # ℹ Group-weighted multilevel descriptive statistics computed with mlstats.tinytable is a lightweight table package included with
mlstats (no extra installation needed). Pass
format = "tt" to print():
| Descriptives | Correlationsa,b | ICC | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Variable | Nobs | M | SD | Range | 1 | 2 | 3 | 4 | 5 | ||
| Note. Group-weighted multilevel descriptive statistics computed with mlstats. | |||||||||||
| a Within-person correlations above, between-person correlations below the diagonal. | |||||||||||
| b All correlations marked with a star are significant at p < .05. | |||||||||||
| 1 | Self control | 100 | 4.03 | 0.83 | 1.60–5.80 | – | NA | NA | NA | NA | 1.00 |
| 2 | Wellbeing | 1,400 | 4.45 | 0.87 | 1.50–6.90 | .61* | – | .42* | -.43* | .45* | .46 |
| 3 | Screen time | 1,400 | 128.66 | 42.29 | 0–272 | -.67* | -.34* | – | .29* | .57* | .45 |
| 4 | Stress | 1,400 | 3.81 | 0.91 | 1–7 | -.53* | -.38* | .38* | – | .05* | .33 |
| 5 | Enjoyment | 1,400 | 4.44 | 0.79 | 2–7 | -.18 | -.21* | .22* | .25* | – | .44 |
The result is a tinytable object that renders to HTML,
PDF, or Word via Quarto/R Markdown (see below).
All print methods accept table_title,
correlation_note, significance_note, and
note_text:
print(result,
format = "tt",
table_title = "Daily diary study: descriptive statistics and multilevel correlations",
correlation_note = "Within-person correlations above, between-person below the diagonal.",
note_text = "N = 100 persons, 14 daily observations each. Simulated data."
)| Descriptives | Correlationsa,b | ICC | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Variable | Nobs | M | SD | Range | 1 | 2 | 3 | 4 | 5 | ||
| Note. N = 100 persons, 14 daily observations each. Simulated data. | |||||||||||
| a Within-person correlations above, between-person below the diagonal. | |||||||||||
| b All correlations marked with a star are significant at p < .05. | |||||||||||
| 1 | Self control | 100 | 4.03 | 0.83 | 1.60–5.80 | – | NA | NA | NA | NA | 1.00 |
| 2 | Wellbeing | 1,400 | 4.45 | 0.87 | 1.50–6.90 | .61* | – | .42* | -.43* | .45* | .46 |
| 3 | Screen time | 1,400 | 128.66 | 42.29 | 0–272 | -.67* | -.34* | – | .29* | .57* | .45 |
| 4 | Stress | 1,400 | 3.81 | 0.91 | 1–7 | -.53* | -.38* | .38* | – | .05* | .33 |
| 5 | Enjoyment | 1,400 | 4.44 | 0.79 | 2–7 | -.18 | -.21* | .22* | .25* | – | .44 |
gt produces richly formatted HTML tables and supports
markdown in cells, footnotes, and fine typographic control. It must be
installed separately:
| Multilevel Descriptive Statistics | |||||||||||
| Variable |
Descriptives
|
Correlationsa,b
|
ICC
|
||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Nobs | M | SD | Range | 1 | 2 | 3 | 4 | 5 | |||
| 1 | Self control | 100 | 4.03 | 0.83 | 1.60–5.80 | – | NA | NA | NA | NA | 1.00 |
| 2 | Wellbeing | 1,400 | 4.45 | 0.87 | 1.50–6.90 | .61* | – | .42* | -.43* | .45* | .46 |
| 3 | Screen time | 1,400 | 128.66 | 42.29 | 0–272 | -.67* | -.34* | – | .29* | .57* | .45 |
| 4 | Stress | 1,400 | 3.81 | 0.91 | 1–7 | -.53* | -.38* | .38* | – | .05* | .33 |
| 5 | Enjoyment | 1,400 | 4.44 | 0.79 | 2–7 | -.18 | -.21* | .22* | .25* | – | .44 |
| Group-weighted multilevel descriptive statistics computed with mlstats. | |||||||||||
| a Within-person correlations above, between-person correlations below the diagonal. | |||||||||||
| b All correlations marked with a star are significant at p < .05. | |||||||||||
gt tables support further customisation via the
gt package API after the initial print() call
— see the gt documentation for
details.
Because mldesc() returns a tibble, standard
dplyr operations work on it before printing.
Drop columns you don’t need in the final table:
| Descriptives | Correlationsa,b | ICC | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Variable | M | SD | 1 | 2 | 3 | 4 | 5 | ||
| Note. Group-weighted multilevel descriptive statistics computed with mlstats. | |||||||||
| a Within-person correlations above, between-person correlations below the diagonal. | |||||||||
| b All correlations marked with a star are significant at p < .05. | |||||||||
| 1 | Self control | 4.03 | 0.83 | – | NA | NA | NA | NA | 1.00 |
| 2 | Wellbeing | 4.45 | 0.87 | .61* | – | .42* | -.43* | .45* | .46 |
| 3 | Screen time | 128.66 | 42.29 | -.67* | -.34* | – | .29* | .57* | .45 |
| 4 | Stress | 3.81 | 0.91 | -.53* | -.38* | .38* | – | .05* | .33 |
| 5 | Enjoyment | 4.44 | 0.79 | -.18 | -.21* | .22* | .25* | – | .44 |
self_control is a between-person-only trait: its
within-person correlations are NA. Replace these with an em
dash for cleaner output:
result |>
mutate(across(everything(), ~ str_replace(as.character(.x), "^NA$", "–"))) |>
print(format = "tt")| Descriptives | Correlationsa,b | ICC | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Variable | Nobs | M | SD | Range | 1 | 2 | 3 | 4 | 5 | ||
| Note. Group-weighted multilevel descriptive statistics computed with mlstats. | |||||||||||
| a Within-person correlations above, between-person correlations below the diagonal. | |||||||||||
| b All correlations marked with a star are significant at p < .05. | |||||||||||
| 1 | Self control | 100 | 4.03 | 0.83 | 1.60–5.80 | – | – | – | – | – | 1.00 |
| 2 | Wellbeing | 1,400 | 4.45 | 0.87 | 1.50–6.90 | .61* | – | .42* | -.43* | .45* | .46 |
| 3 | Screen time | 1,400 | 128.66 | 42.29 | 0–272 | -.67* | -.34* | – | .29* | .57* | .45 |
| 4 | Stress | 1,400 | 3.81 | 0.91 | 1–7 | -.53* | -.38* | .38* | – | .05* | .33 |
| 5 | Enjoyment | 1,400 | 4.44 | 0.79 | 2–7 | -.18 | -.21* | .22* | .25* | – | .44 |
Variable names are auto-formatted as sentence case. To customise them:
result |>
mutate(variable = case_when(
variable == "Self control" ~ "Trait self-control",
variable == "Wellbeing" ~ "Daily wellbeing",
variable == "Screen time" ~ "Screen time (min)",
variable == "Stress" ~ "Perceived stress",
variable == "Enjoyment" ~ "Media enjoyment"
)) |>
print(format = "tt", table_title = "Study variables: descriptive statistics")| Descriptives | Correlationsa,b | ICC | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Variable | Nobs | M | SD | Range | 1 | 2 | 3 | 4 | 5 | ||
| Note. Group-weighted multilevel descriptive statistics computed with mlstats. | |||||||||||
| a Within-person correlations above, between-person correlations below the diagonal. | |||||||||||
| b All correlations marked with a star are significant at p < .05. | |||||||||||
| 1 | Trait self-control | 100 | 4.03 | 0.83 | 1.60–5.80 | – | NA | NA | NA | NA | 1.00 |
| 2 | Daily wellbeing | 1,400 | 4.45 | 0.87 | 1.50–6.90 | .61* | – | .42* | -.43* | .45* | .46 |
| 3 | Screen time (min) | 1,400 | 128.66 | 42.29 | 0–272 | -.67* | -.34* | – | .29* | .57* | .45 |
| 4 | Perceived stress | 1,400 | 3.81 | 0.91 | 1–7 | -.53* | -.38* | .38* | – | .05* | .33 |
| 5 | Media enjoyment | 1,400 | 4.44 | 0.79 | 2–7 | -.18 | -.21* | .22* | .25* | – | .44 |
All of the above can be chained. Here is an example of a polished table combining several customisations:
result |>
select(-n_obs, -range) |>
mutate(across(everything(), ~ str_replace(as.character(.x), "^NA$", "–"))) |>
mutate(variable = case_when(
variable == "Self control" ~ "Trait self-control",
variable == "Wellbeing" ~ "Daily wellbeing",
variable == "Screen time" ~ "Screen time (min)",
variable == "Stress" ~ "Perceived stress",
variable == "Enjoyment" ~ "Media enjoyment"
)) |>
print(
format = "tt",
table_title = "Descriptive statistics and multilevel correlations",
correlation_note = "Within-person correlations above, between-person below the diagonal.",
note_text = "N = 100, T = 1,400 daily observations. Self-control was measured as a trait (between-person only)."
)| Descriptives | Correlationsa,b | ICC | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Variable | M | SD | 1 | 2 | 3 | 4 | 5 | ||
| Note. N = 100, T = 1,400 daily observations. Self-control was measured as a trait (between-person only). | |||||||||
| a Within-person correlations above, between-person below the diagonal. | |||||||||
| b All correlations marked with a star are significant at p < .05. | |||||||||
| 1 | Trait self-control | 4.03 | 0.83 | – | – | – | – | – | 1.00 |
| 2 | Daily wellbeing | 4.45 | 0.87 | .61* | – | .42* | -.43* | .45* | .46 |
| 3 | Screen time (min) | 128.66 | 42.29 | -.67* | -.34* | – | .29* | .57* | .45 |
| 4 | Perceived stress | 3.81 | 0.91 | -.53* | -.38* | .38* | – | .05* | .33 |
| 5 | Media enjoyment | 4.44 | 0.79 | -.18 | -.21* | .22* | .25* | – | .44 |
For the equivalent using gt (which additionally supports
footnotes and markdown-formatted cell content):
result |>
select(-n_obs, -range) |>
mutate(across(everything(), ~ str_replace(as.character(.x), "^NA$", "–"))) |>
mutate(
variable = case_when(
variable == "Self control" ~ "Trait self-control<sup>c</sup>",
variable == "Wellbeing" ~ "Daily wellbeing",
variable == "Screen time" ~ "Screen time (min)",
variable == "Stress" ~ "Perceived stress",
variable == "Enjoyment" ~ "Media enjoyment"
)
) |>
print(
format = "gt",
table_title = "Descriptive statistics and multilevel correlations",
correlation_note = "Within-person correlations above, between-person below the diagonal.",
note_text = "<i>Note</i>. <i>N</i> = 100, <i>T</i> = 1,400 daily observations."
) |>
gt::tab_source_note(
source_note = gt::html(
"<sup>c</sup> Self-control was measured as a stable trait; no within-person correlations are available."
)
) |>
gt::fmt_markdown(columns = variable)| Descriptive statistics and multilevel correlations | |||||||||
| Variable |
Descriptives
|
Correlationsa,b
|
ICC
|
||||||
|---|---|---|---|---|---|---|---|---|---|
| M | SD | 1 | 2 | 3 | 4 | 5 | |||
| 1 | Trait self-controlc | 4.03 | 0.83 | – | – | – | – | – | 1.00 |
| 2 | Daily wellbeing | 4.45 | 0.87 | .61* | – | .42* | -.43* | .45* | .46 |
| 3 | Screen time (min) | 128.66 | 42.29 | -.67* | -.34* | – | .29* | .57* | .45 |
| 4 | Perceived stress | 3.81 | 0.91 | -.53* | -.38* | .38* | – | .05* | .33 |
| 5 | Media enjoyment | 4.44 | 0.79 | -.18 | -.21* | .22* | .25* | – | .44 |
| Note. N = 100, T = 1,400 daily observations. | |||||||||
| a Within-person correlations above, between-person below the diagonal. | |||||||||
| b All correlations marked with a star are significant at p < .05. | |||||||||
| c Self-control was measured as a stable trait; no within-person correlations are available. | |||||||||
Wrap the print() call in a Quarto code chunk with
format: docx:
---
format: docx
---
```{r}
library(mlstats)
data("media_diary")
mldesc(
data = media_diary,
group = "person",
vars = c("self_control", "wellbeing", "screen_time", "stress")
) |>
print(format = "tt")
```tinytable automatically converts to the appropriate
format based on the output Quarto is rendering to.
Both tinytable and gt render natively to
HTML and LaTeX. No extra setup is needed:
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.