diff --git a/DESCRIPTION b/DESCRIPTION
index e8780ed..b5c7227 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
Type: Package
Package: SummaryTables
Title: Publication-Ready Summary Tables for Jamovi
-Version: 1.3.0
+Version: 1.3.1
Authors@R:
person("Nour Edin", "Darwish", , "nouredindarwish@gmail.com", role = c("aut", "cre"),
comment = c(ORCID = "0009-0009-5527-4539"))
diff --git a/NEWS.md b/NEWS.md
index 9944330..8d61c44 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,7 @@
+## SummaryTables 1.3.1
+
+* Improved the message shown when required variables are missing.
+
## SummaryTables 1.3.0
* Added Standardized Coefficients for Linear Regression analyses (both Univariable and Multivariable).
diff --git a/R/tblcontinuous.b.R b/R/tblcontinuous.b.R
index 6c359fc..6fdc911 100644
--- a/R/tblcontinuous.b.R
+++ b/R/tblcontinuous.b.R
@@ -8,7 +8,7 @@ tblContinuousClass <- R6::R6Class(
if (is.null(contVar) || length(varsCat) == 0) {
renderPlaceholder(
- "Add a continuous variable and at least one categorical variable to generate the table", # nolint
+ "Add a Continuous Variable and at least one Categorical Variable to generate the table", # nolint
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tblcross.b.R b/R/tblcross.b.R
index dd7f8f4..9e216bb 100644
--- a/R/tblcross.b.R
+++ b/R/tblcross.b.R
@@ -7,7 +7,7 @@ tblCrossClass <- R6::R6Class(
col <- self$options$col
if (is.null(row) || is.null(col)) {
renderPlaceholder(
- "Add a row variable and a column variable to generate the table",
+ "Add a Row Variable and a Column Variable to generate the table",
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tbllikert.b.R b/R/tbllikert.b.R
index 9208a1a..332d9d7 100644
--- a/R/tbllikert.b.R
+++ b/R/tbllikert.b.R
@@ -6,7 +6,7 @@ tblLikertClass <- R6::R6Class(
vars <- self$options$vars
if (length(vars) == 0) {
renderPlaceholder(
- "Add Likert scale variables to generate the table",
+ "Add at least one Likert-scale Variable to generate the table",
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tblregcox.b.R b/R/tblregcox.b.R
index 76af27c..dc37782 100644
--- a/R/tblregcox.b.R
+++ b/R/tblregcox.b.R
@@ -9,7 +9,7 @@ tblRegCoxClass <- R6::R6Class(
if (is.null(elapsed) || is.null(event) || length(terms) == 0) {
renderPlaceholder(
- "Add a time variable, an event variable, and at least one term to generate the table", #nolint
+ "Add a Time variable, an Event variable, and at least one Model Term to generate the table", #nolint
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tblreglinear.b.R b/R/tblreglinear.b.R
index 1fcc9c7..4344017 100644
--- a/R/tblreglinear.b.R
+++ b/R/tblreglinear.b.R
@@ -8,7 +8,7 @@ tblRegLinearClass <- R6::R6Class(
if (is.null(dep) || length(terms) == 0) {
renderPlaceholder(
- "Add a dependent variable and at least one term to generate the table", #nolint
+ "Add a Dependent Variable and at least one Model Term to generate the table", #nolint
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tblreglogistic.b.R b/R/tblreglogistic.b.R
index eb19f81..1f4162a 100644
--- a/R/tblreglogistic.b.R
+++ b/R/tblreglogistic.b.R
@@ -8,7 +8,7 @@ tblRegLogisticClass <- R6::R6Class(
if (is.null(dep) || length(terms) == 0) {
renderPlaceholder(
- "Add a dependent variable and at least one term to generate the table", #nolint
+ "Add a Dependent Variable and at least one Model Term to generate the table", #nolint
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tblsummary.b.R b/R/tblsummary.b.R
index 892fe05..e0a72cd 100644
--- a/R/tblsummary.b.R
+++ b/R/tblsummary.b.R
@@ -10,7 +10,7 @@ tblSummaryClass <- R6::R6Class(
if (!hasCont && !hasCat) {
renderPlaceholder(
- "Add continuous or categorical variables to generate the table",
+ "Add at least one Continuous or Categorical Variable to generate the table",
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tblsurvfit.b.R b/R/tblsurvfit.b.R
index 87a15f7..ed8fbbe 100644
--- a/R/tblsurvfit.b.R
+++ b/R/tblsurvfit.b.R
@@ -8,7 +8,7 @@ tblSurvfitClass <- R6::R6Class(
if (is.null(elapsed) || is.null(event)) {
renderPlaceholder(
- "Add a time variable and an event variable to generate the table",
+ "Add a Time variable and an Event variable to generate the table",
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tbluniregcox.b.R b/R/tbluniregcox.b.R
index f2e22d2..1b552cc 100644
--- a/R/tbluniregcox.b.R
+++ b/R/tbluniregcox.b.R
@@ -14,7 +14,7 @@ tblUniRegCoxClass <- R6::R6Class(
(length(covs) == 0 && length(factors) == 0)
) {
renderPlaceholder(
- "Add a time variable, an event variable, and at least one covariate or factor to generate the table", #nolint
+ "Add a Time variable, an Event variable, and at least one Covariate or Factor to generate the table", #nolint
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tblunireglinear.b.R b/R/tblunireglinear.b.R
index 9935e1e..2f0bc52 100644
--- a/R/tblunireglinear.b.R
+++ b/R/tblunireglinear.b.R
@@ -9,7 +9,7 @@ tblUniRegLinearClass <- R6::R6Class(
if (is.null(dep) || (length(covs) == 0 && length(factors) == 0)) {
renderPlaceholder(
- "Add a dependent variable and at least one covariate or factor to generate the table", #nolint
+ "Add a Dependent Variable and at least one Covariate or Factor to generate the table", #nolint
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/R/tblunireglogistic.b.R b/R/tblunireglogistic.b.R
index fd3714d..ab31f44 100644
--- a/R/tblunireglogistic.b.R
+++ b/R/tblunireglogistic.b.R
@@ -9,7 +9,7 @@ tblUniRegLogisticClass <- R6::R6Class(
if (is.null(dep) || (length(covs) == 0 && length(factors) == 0)) {
renderPlaceholder(
- "Add a dependent variable and at least one covariate or factor to generate the table", #nolint
+ "Add a Dependent Variable and at least one Covariate or Factor to generate the table", #nolint
self$results$tbl
)
self$results$status$setVisible(FALSE)
diff --git a/docs/user-guide.md b/docs/user-guide.md
index 3c539c7..acd4f1a 100644
--- a/docs/user-guide.md
+++ b/docs/user-guide.md
@@ -11,8 +11,8 @@ This guide highlights important notes, default behaviors, and specific options y
A quick reference guide for choosing the right table based on your data and goals:
-* **Table 1 / Main Summary:** Use the **Summary Table** without a grouping variable for a general overview.
-* **Categorical Outcome:** Use the **Summary Table** with your outcome assigned to the **Grouping Variable**.
+* **Table 1 / Main Summary:** Use the **Summary Table** without adding a **Grouping Variable** for a general overview.
+* **Categorical Outcome:** Use the **Summary Table** with your outcome added to the **Grouping Variable**.
* **Continuous Outcome:** Use the **Continuous Table**.
* **Only Two Categorical Variables:** Use the **Cross Table** for a straightforward cross-tabulation.
* **Likert Scale Data:** Use the **Likert Table**.
@@ -38,7 +38,7 @@ To prevent this snowballing delay, you can enable *Manual Run Mode*.
{ loading=lazy width="500" }
-Checking the **"Run manually"** option disables the auto-run behavior and activates the **"Run"** button. This allows you to add all 10 variables at once and set all your options without triggering any calculations. Once everything is set up, click **"Run"** to calculate the final table exactly once—fitting just the *10 models* you actually need. This saves a huge amount of time, especially for computationally heavy tables like regressions.
+Checking the **Run manually** option disables the auto-run behavior and activates the **Run** button. This allows you to add all 10 variables at once and set all your options without triggering any calculations. Once everything is set up, click **Run** to calculate the final table exactly once—fitting just the *10 models* you actually need. This saves a huge amount of time, especially for computationally heavy tables like regressions.
### Save to Word
@@ -71,20 +71,20 @@ You can independently set the rounding rules for various elements in your tables
#### P-Values
-The p-value dropdown controls the rounding of *large* p-values, while precision automatically increases as p-values get smaller.
+The p-value **Decimal places** dropdown controls the rounding of *large* p-values, while precision automatically increases as p-values get smaller.
{ loading=lazy width="500" }
* **Auto (Default):** Depends on the theme (the default theme uses **"1"**).
-* **1:** Large p-values are rounded to one decimal place. Precision increases as p-values decrease, and very small values are shown as `<0.001`.
-* **2:** Large p-values are rounded to two decimal places. Precision increases as p-values decrease, and very small values are shown as `<0.001`.
-* **3:** Large p-values are rounded to three decimal places. Precision increases as p-values decrease, and very small values are shown as `<0.001`.
+* **1:** Large p-values are rounded to 1 decimal place. Precision automatically increases to 2, then 3 decimal places as values get smaller. Extremes are shown as `>0.9` and `<0.001`.
+* **2:** Large p-values are rounded to 2 decimal places. Precision automatically increases to 3 decimal places as values get smaller. Extremes are shown as `>0.99` and `<0.001`.
+* **3:** All p-values are rounded to 3 decimal places. Extremes are shown as `>0.999` and `<0.001`.
### Statistical Tests
-The module automatically selects appropriate statistical tests based on your data types and the number of groups across the **Summary Table**, **Continuous Table**, and **Cross Table**. You can configure this behavior in the **Default test** dropdowns:
+The module automatically selects appropriate statistical tests based on your data types and the number of groups across the **Summary Table**, **Continuous Table**, and **Cross Table**. You can configure this behavior using the **Default test** dropdowns:
#### Continuous Variables
@@ -96,7 +96,7 @@ The module automatically selects appropriate statistical tests based on your dat
* **Non-parametric:** Uses the Wilcoxon rank-sum test for 2 groups, or Kruskal-Wallis rank-sum test for >2 groups.
!!! info "Grouping Variable in the Continuous Table"
- If you assign a **Grouping Variable** in the **Continuous Table**, the module automatically calculates p-values using a two-way ANOVA. In this specific configuration, no other statistical tests can be applied.
+ If you add a **Grouping Variable** in the **Continuous Table**, the module automatically calculates p-values using a two-way ANOVA. In this specific configuration, no other statistical tests can be applied.
#### Categorical Variables
@@ -121,14 +121,14 @@ If you want specific tests for specific variables, you can manually select a dif
### Summary Table: Difference
!!! info "SMD Method Calculation"
- When you select the **SMD** option as your **Difference** method, the values are calculated using the [`smd` R package](https://bsaul.github.io/smd/index.html).
+ When you select **SMD** as your **Difference** method, the values are calculated using the [`smd` R package](https://bsaul.github.io/smd/index.html).
{ loading=lazy width="500" }
!!! failure "Multiple P-Value Columns Error"
- If you select a **Difference** method that generates a p-value and you also check **P-value** under the general **P-value** section, an error will occur. The table cannot display multiple p-value columns simultaneously.
+ If you select a **Difference** method that generates a p-value and you also check the **P-value** option under the general **P-value** section, an error will occur. The table cannot display multiple p-value columns simultaneously.
{ loading=lazy width="500" }
@@ -136,10 +136,10 @@ If you want specific tests for specific variables, you can manually select a dif
### Regression Tables: Univariable vs. Multivariable
-It is important to understand the fundamental difference in how the **Univariable Regression** and **Multivariable Regression** tables are constructed:
+It is important to understand the fundamental difference in how **Univariable Regression** and **Multivariable Regression** tables are constructed:
-* **Univariable Regression:** Fits *one separate model per predictor*. If you add 5 variables across the **Covariates** and **Factors** lists, the module will fit 5 distinct simple regression models (each predicting the dependent variable using just that one predictor) and combine the results into a single table.
-* **Multivariable Regression:** Fits *one single model containing all predictors*. If you add 5 variables across the **Covariates** and **Factors** lists, the module will fit a single model where all 5 variables are included simultaneously, adjusting for each other.
+* **Univariable Regression:** Fits *one separate model per predictor*. If you add 5 variables to **Covariates** and **Factors**, the module will fit 5 distinct simple regression models (each predicting the dependent variable using just that one predictor) and combine the results into a single table.
+* **Multivariable Regression:** Fits *one single model containing all predictors*. If you add 5 variables to **Covariates** and **Factors**, the module will fit a single model where all 5 variables are included simultaneously, adjusting for each other.
### Regression Tables: Standardized Coefficients
@@ -154,7 +154,7 @@ For linear regression models, SummaryTables allows you to report standardized co
### Survival and Cox Regression: Event Variable Coding
-When using the **Survival Table** or **Cox Regression** analyses, the **Event variable** must be coded correctly:
+When using the **Survival Table** or **Cox Regression** analyses, the **Event** variable must be coded correctly:
{ loading=lazy width="500" }
diff --git a/jamovi/0000.yaml b/jamovi/0000.yaml
index b70fbfb..259a1ce 100644
--- a/jamovi/0000.yaml
+++ b/jamovi/0000.yaml
@@ -1,12 +1,12 @@
---
title: Publication-Ready Summary Tables
name: SummaryTables
-version: 1.3.0
+version: 1.3.1
jms: '1.0'
authors:
- Nour Edin Darwish
maintainer: Nour Edin Darwish
-date: '2026-05-23'
+date: '2026-05-24'
type: R
description: >-
A comprehensive module for creating publication-ready summary and regression