# I had to name age groups, Middle Age (50-59)", Older Middle Age (60-69), Seniors (70-76) which was not in the original table but without the names I was unable to use just the numbers in brackets as a column value.
# Create Age Group variable
ageDataTable <- ageDataTable %>%
mutate(Age_Group = factor(case_when(
Age >= 10 & Age <= 17 ~ "Adolescence (10-17)",
Age >= 18 & Age <= 35 ~ "Early Adult (18-35)",
Age >= 36 & Age <= 49 ~ "Early Middle Age (36-49)",
Age >= 50 & Age <= 59 ~ "Middle Age (50-59)",
Age >= 60 & Age <= 69 ~ "Older Middle Age (60-69)",
Age >= 70 & Age <= 76 ~ "Seniors (70-76)"
), levels = c("Adolescence (10-17)", "Early Adult (18-35)", "Early Middle Age (36-49)",
"Middle Age (50-59)", "Older Middle Age (60-69)", "Seniors (70-76)"))) %>%
filter(Age >= 10 & Age <= 76) %>%
mutate(Task = recode(
Task,
"Overall" = "Overall",
"Memory Task" = "Memory",
"Sorting Task" = "Sorting"))
# Calculate mean, standard deviation, and count of participants for each Age_Group and Task rounded to 1 dp
age_group_summary <- ageDataTable %>%
group_by(Age_Group, Task) %>%
summarise(Mean = round(mean(Score, na.rm = TRUE), 1),
SD = round(sd(Score, na.rm = TRUE), 1),
N = n())
## `summarise()` has grouped output by 'Age_Group'. You can override using the
## `.groups` argument.
# Pivot the table wider so that the age groups are the column variables
age_group_summary_wider <- age_group_summary %>%
pivot_wider(names_from = Age_Group,
values_from = c(Mean, SD, N),
names_sep = "_")
# Because the`variable names`must be unique we have to rename manually the column labels to get Mean, SD and N using gt()
age_group_summary_wider %>%
gt() %>%
cols_label(
`Mean_Adolescence (10-17)` = 'Mean',
`SD_Adolescence (10-17)` = 'SD',
`N_Adolescence (10-17)` = 'N',
`Mean_Early Adult (18-35)` = 'Mean',
`SD_Early Adult (18-35)` = 'SD',
`N_Early Adult (18-35)` = 'N',
`Mean_Early Middle Age (36-49)` = 'Mean',
`SD_Early Middle Age (36-49)` = 'SD',
`N_Early Middle Age (36-49)` = 'N',
`Mean_Middle Age (50-59)` = 'Mean',
`SD_Middle Age (50-59)` = 'SD',
`N_Middle Age (50-59)` = 'N',
`Mean_Older Middle Age (60-69)` = 'Mean',
`SD_Older Middle Age (60-69)` = 'SD',
`N_Older Middle Age (60-69)` = 'N',
`Mean_Seniors (70-76)` = 'Mean',
`SD_Seniors (70-76)` = 'SD',
`N_Seniors (70-76)` = 'N',
) %>%
tab_header(
title = md('Table 4. Mean accuracy (%) and standard deviation by participant age from online samples'),
subtitle = md('Age group (years)')
) %>%
tab_spanner(
label = md('**Adolescence (10-17)**'),
columns = c(2,8,14)
) %>%
tab_spanner(
label = md('**Early Adult <br> (18-35)**'),
columns = c(3,9,15)
) %>%
tab_spanner(
label = md('**Early Middle Age (36-49)**'),
columns = c(4,10,16)
) %>%
tab_spanner(
label = md('**Middle Age <br>(50-59)**'),
columns = c(5,11,17)
) %>%
tab_spanner(
label = md('**Older Middle Age (60-69)**'),
columns = c(6,12,18)
) %>%
tab_spanner(
label = md('**Seniors <br> (70-76)**'),
columns = c(7,13,19)
)
| Table 4. Mean accuracy (%) and standard deviation by participant age from online samples | ||||||||||||||||||
| Age group (years) | ||||||||||||||||||
| Task | Adolescence (10-17) |
Early Adult (18-35) |
Early Middle Age (36-49) |
Middle Age (50-59) |
Older Middle Age (60-69) |
Seniors (70-76) |
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Mean | SD | N | Mean | SD | N | Mean | SD | N | Mean | SD | N | Mean | SD | N | Mean | SD | N | |
| Memory | 62.2 | 8.4 | 1470 | 65.6 | 8.7 | 10163 | 65.3 | 8.7 | 6905 | 62.6 | 8.3 | 3149 | 60.5 | 8.0 | 1139 | 59.5 | 7.3 | 169 |
| Overall | 59.1 | 5.8 | 1470 | 62.8 | 6.5 | 10163 | 62.5 | 6.4 | 6905 | 61.1 | 5.9 | 3149 | 59.8 | 5.8 | 1139 | 58.8 | 5.1 | 169 |
| Sorting | 57.5 | 6.8 | 1470 | 61.4 | 7.6 | 10163 | 61.1 | 7.7 | 6905 | 60.4 | 7.3 | 3149 | 59.5 | 7.2 | 1139 | 58.4 | 6.5 | 169 |