R/correltable.R
correltable.Rd
The correltable
function can be used to create correlation
table (with stars for significance) for scientific publication
This is intended to summarize correlations between (vars
)
from an input dataset (data
).
Correlations are based on stats::cor
, use
and method
follow from that function.
Stars indicate significance: *p<.05, **p<.01, ***p<.001
For formatting, variables can be renamed, numbers can be rounded,
upper or lower triangle only can be selected (or whole matrix),
and empty columns/rows can be dropped if using triangles.
For more compact columns, variable names can be numbered in the
rows and column names will be corresponding numbers.
If only cross-correlation between two sets of variables is desired
(no correlations within a set of variables),
vars2
and var_names
can be used.
This function will drop any non-numeric variables by default.
Requires tidyverse
and stats
libraries.
correltable( data, vars = NULL, var_names = vars, vars2 = NULL, var_names2 = vars2, method = c("pearson", "spearman"), use = c("pairwise", "complete"), round_n = 2, tri = c("upper", "lower", "all"), cutempty = c(FALSE, TRUE), colnum = c(FALSE, TRUE), html = c(FALSE, TRUE), strata = NULL )
data | The input dataset. |
---|---|
vars | A list of the names of variables to correlate,
e.g. c("Age","height","WASI"),
if NULL, all variables in |
var_names | An optional list to rename the |
vars2 | If cross-correlation between two sets of variables
is desired, add a second list of variables to correlate with
|
var_names2 | An optional list to rename the |
method | Type of correlation to calculate c("pearson", "spearman"),
based on |
use | Use pairwise.complete.obs or restrict to complete cases
c("pairwise", "complete"), based on |
round_n | The number of decimal places to round all output to (default=2). |
tri | Select output formatting c("upper", "lower","all"); KEEP the upper triangle, lower triangle, or all values, default ="upper. |
cutempty | If keeping only upper/lower triangle with |
colnum | For more concise column names, number row names and just use corresponding numbers as column names, default=FALSE, if TRUE overrides cutempty. |
html | Format as html in viewer or not (default=F, print in console), needs library(htmlTable) installed. |
strata | Split table by a 2-level factor variable with level1 in the upper and level2 in the lower triangle must have 2+ cases per level, cannot be combined with vars2 |
Output Table 1
correltable(data = psydat)#> Warning: Converting non-numeric columns to factor: Sex,Income#> $table #> Age Sex Income Height iq depressT anxT #> Age t=-1.86 F=4.17* .41*** .09*** .02 -.01 #> Sex \u03c72=0.72 t=0.83 t=1.25 t=-4.87*** t=-5.76*** #> Income F=1.15 F=364.33*** F=31.18*** F=16.26*** #> Height .04* -.01 -.01 #> iq -.08*** -.06*** #> depressT .61*** #> anxT #> #> $caption #> [1] "Note. This table presents Pearson correlation coefficients with pairwise deletion. N=4 missing Sex. N=404 missing Income. N=7 missing Height. N=179 missing iq. N=8 missing depressT. N=8 missing anxT. Group differences for continuous and categorical\n variables are indicated by t-statistic/ANOVA F\n and chi-squared, respectively. * p<.05, ** p<.01, *** p<.001" #>#> <table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;' > #> <thead> #> <tr><th style='border-bottom: 1px solid grey; border-top: 2px solid grey;'></th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Age</th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Height</th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>iq</th> #> </tr> #> </thead> #> <tbody> #> <tr> #> <td style='text-align: left;'>Age</td> #> <td style='text-align: center;'></td> #> <td style='text-align: center;'></td> #> <td style='text-align: center;'></td> #> </tr> #> <tr> #> <td style='text-align: left;'>Height</td> #> <td style='text-align: center;'>.41***</td> #> <td style='text-align: center;'></td> #> <td style='text-align: center;'></td> #> </tr> #> <tr> #> <td style='border-bottom: 2px solid grey; text-align: left;'>iq</td> #> <td style='border-bottom: 2px solid grey; text-align: center;'>.09***</td> #> <td style='border-bottom: 2px solid grey; text-align: center;'>.04*</td> #> <td style='border-bottom: 2px solid grey; text-align: center;'></td> #> </tr> #> </tbody> #> <tr><td colspan='4' style='text-align: left;'> #> Note. This table presents Pearson correlation coefficients with pairwise deletion. N=7 missing Height. N=179 missing iq. * p<.05, ** p<.01, *** p<.001</td></tr> #> </table>correltable( data = psydat, vars = c("Age", "Height", "iq"), tri = "lower", html = TRUE, strata = "Sex" )#> <table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;' > #> <thead> #> <tr><th style='border-bottom: 1px solid grey; border-top: 2px solid grey;'></th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Age</th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Height</th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>iq</th> #> </tr> #> </thead> #> <tbody> #> <tr> #> <td style='text-align: left;'>Age</td> #> <td style='text-align: center;'></td> #> <td style='text-align: center;'>.43***</td> #> <td style='text-align: center;'>.07***</td> #> </tr> #> <tr> #> <td style='text-align: left;'>Height</td> #> <td style='text-align: center;'>.40***</td> #> <td style='text-align: center;'></td> #> <td style='text-align: center;'>.01</td> #> </tr> #> <tr> #> <td style='border-bottom: 2px solid grey; text-align: left;'>iq</td> #> <td style='border-bottom: 2px solid grey; text-align: center;'>.10***</td> #> <td style='border-bottom: 2px solid grey; text-align: center;'>.07***</td> #> <td style='border-bottom: 2px solid grey; text-align: center;'></td> #> </tr> #> </tbody> #> <tr><td colspan='4' style='text-align: left;'> #> Note. This table presents Pearson correlation coefficients with pairwise deletion. N=7 missing Height. N=179 missing iq. The data were split by Sex (upper triangle = F; lower triangle = M). * p<.05, ** p<.01, *** p<.001</td></tr> #> </table>correltable( data = psydat, vars = c("Age", "Height", "iq"), var_names = c("Age (months)", "Height (inches)", "IQ"), tri = "upper", colnum = TRUE, html = TRUE )#> <table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;' > #> <thead> #> <tr><th style='border-bottom: 1px solid grey; border-top: 2px solid grey;'></th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>1</th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>2</th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>3</th> #> </tr> #> </thead> #> <tbody> #> <tr> #> <td style='text-align: left;'>1. Age (months)</td> #> <td style='text-align: center;'></td> #> <td style='text-align: center;'>.41***</td> #> <td style='text-align: center;'>.09***</td> #> </tr> #> <tr> #> <td style='text-align: left;'>2. Height (inches)</td> #> <td style='text-align: center;'></td> #> <td style='text-align: center;'></td> #> <td style='text-align: center;'>.04*</td> #> </tr> #> <tr> #> <td style='border-bottom: 2px solid grey; text-align: left;'>3. IQ</td> #> <td style='border-bottom: 2px solid grey; text-align: center;'></td> #> <td style='border-bottom: 2px solid grey; text-align: center;'></td> #> <td style='border-bottom: 2px solid grey; text-align: center;'></td> #> </tr> #> </tbody> #> <tr><td colspan='4' style='text-align: left;'> #> Note. This table presents Pearson correlation coefficients with pairwise deletion. N=7 missing Height (inches). N=179 missing IQ. * p<.05, ** p<.01, *** p<.001</td></tr> #> </table>correltable( data = psydat, vars = c("Age", "Height", "iq"), var_names = c("Age (months)", "Height (inches)", "IQ"), vars2 = c("depressT", "anxT"), var_names2 = c("Depression T", "Anxiety T"), html = TRUE )#> <table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;' > #> <thead> #> <tr><th style='border-bottom: 1px solid grey; border-top: 2px solid grey;'></th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Depression T</th> #> <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Anxiety T</th> #> </tr> #> </thead> #> <tbody> #> <tr> #> <td style='text-align: left;'>Age (months)</td> #> <td style='text-align: center;'>.02</td> #> <td style='text-align: center;'>-.01</td> #> </tr> #> <tr> #> <td style='text-align: left;'>Height (inches)</td> #> <td style='text-align: center;'>-.01</td> #> <td style='text-align: center;'>-.01</td> #> </tr> #> <tr> #> <td style='border-bottom: 2px solid grey; text-align: left;'>IQ</td> #> <td style='border-bottom: 2px solid grey; text-align: center;'>-.08***</td> #> <td style='border-bottom: 2px solid grey; text-align: center;'>-.06***</td> #> </tr> #> </tbody> #> <tr><td colspan='3' style='text-align: left;'> #> Note. This table presents Pearson correlation coefficients with pairwise deletion. N=7 missing Height (inches). N=179 missing IQ. N=8 missing Depression T. N=8 missing Anxiety T. * p<.05, ** p<.01, *** p<.001</td></tr> #> </table>