This function compares the median of a continuous variable across levels of a categorical variable and summarizes the results in a clean table for a statistical report. Similar to tabmeans, but for survey data. Relies heavily on the 'survey' package [1,2].

1 2 3 4 5 6 7 | ```
tabmedians.svy(svy, x, y, latex = FALSE, xlevels = NULL, yname = "Y variable",
test = "wilcoxon", decimals = 1, p.include = TRUE, p.decimals = c(2, 3),
p.cuts = 0.01, p.lowerbound = 0.001, p.leading0 = TRUE, p.avoid1 = FALSE,
n.column = FALSE, n.headings = TRUE, parenth = "iqr", text.label = NULL,
parenth.sep = "-", bold.colnames = TRUE, bold.varnames = FALSE,
variable.colname = "Variable", print.html = FALSE,
html.filename = "table1.html")
``` |

`svy` |
Survey design object created by a call to svydesign [1,2]. |

`x` |
Vector of values for the categorical variable. |

`y` |
Vector of values for the continuous variable. |

`latex` |
If TRUE, object returned is formatted for printing in LaTeX using xtable [3]; if FALSE, formatted for copy-and-pasting from RStudio into a word processor. |

`xlevels` |
Optional character vector to label the levels of x. If unspecified, the function uses the values that x takes on. |

`yname` |
Optional label for the continuous variable. |

`test` |
Controls statistical test. Must be a possible value for the 'test' input of the svyranktest function in the survey package [1,2]: 'wilcoxon' for Mann-Whitney U/Wilcoxon test of whether one group is from distribution that is stochastically greater than the other; 'vanderWaerden' for Van der Waerden test of whether the population distribution functions are equal; 'median' for Mood's test for whether the population medians are equal; and 'KruskalWallis' for Kruskal-Wallis test which is Mann-Whitney U/Wilcoxon generalized to three or more groups. |

`decimals` |
Number of decimal places for means and standard deviations or standard errors. |

`p.include` |
If FALSE, statistical test is not performed and p-value is not returned. |

`p.decimals` |
Number of decimal places for p-values. If a vector is provided rather than a single value, number of decimal places will depend on what range the p-value lies in. See p.cuts. |

`p.cuts` |
Cut-point(s) to control number of decimal places used for p-values. For example, by default p.cuts is 0.1 and p.decimals is c(2, 3). This means that p-values in the range [0.1, 1] will be printed to two decimal places, while p-values in the range [0, 0.1) will be printed to three decimal places. |

`p.lowerbound` |
Controls cut-point at which p-values are no longer printed as their value, but rather <lowerbound. For example, by default p.lowerbound is 0.001. Under this setting, p-values less than 0.001 are printed as <0.001. |

`p.leading0` |
If TRUE, p-values are printed with 0 before decimal place; if FALSE, the leading 0 is omitted. |

`p.avoid1` |
If TRUE, p-values rounded to 1 are not printed as 1, but as >0.99 (or similarly depending on values for p.decimals and p.cuts). |

`n.column` |
If TRUE, the table will have a column for (unweighted) sample size. |

`n.headings` |
If TRUE, the table will indicate the (unweighted) sample size overall and in each group in parentheses after the column headings. |

`parenth` |
Controls what values (if any) are placed in parentheses after the medians in each cell. Possible choices are as follows: 'minmax' for minimum and maximum; 'range' for difference between minimum and maximum; 'q1q3' for first and third quartiles; 'iqr' for difference between first and third quartiles; or 'none' for no parentheses at all. |

`text.label` |
Optional text to put after the variable name. For example, if parenth is 'q1q3' and yname is 'BMI' the default label would be 'BMI, Median (Q1-Q3)'. You might prefer to set text.label to something like 'Med (Quartile 1-Quartile 3)' instead. |

`parenth.sep` |
Optional character specifying the separator for the two numbers in parentheses when parenth is set to 'minmax' or 'q1q3'. The default is a dash, so values in the table are formatted as Median (Lower-Upper). If you set parenth.sep to ', ' the values in the table would instead be formatted as Median (Lower, Upper). |

`bold.colnames` |
If TRUE, column headings are printed in bold font. Only applies if latex = TRUE. |

`bold.varnames` |
If TRUE, variable name in the first column of the table is printed in bold font. Only applies if latex = TRUE. |

`variable.colname` |
Character string with desired heading for first column of table, which shows the y variable name. |

`print.html` |
If TRUE, function prints a .html file to the current working directory. |

`html.filename` |
Character string indicating the name of the .html file that gets printed if print.html is set to TRUE. |

NA

A character matrix with the requested table comparing median y across levels of x. If latex is set to TRUE, the character matrix will be formatted for inserting into a Markdown/Sweave/knitr report using the xtable package [3].

If you have suggestions for additional options or features, or if you would like some help using any function in the package tab, please e-mail me at vandomed@gmail.com. Thanks!

Dane R. Van Domelen

1. Lumley T (2012). survey: analysis of complex survey samples. R package version 3.28-2, https://cran.r-project.org/package=survey.

2. Lumley T (2014). Analysis of complex survey samples. Journal of Statistical Software 9(1): 1-19.

3. Dahl DB (2013). xtable: Export tables to LaTeX or HTML. R package version 1.7-1, https://cran.r-project.org/package=xtable.

4. Kevin Ushey (2013). Kmisc: Kevin Miscellaneous. R package version 0.5.0. https://CRAN.R-project.org/package=Kmisc.

Acknowledgment: This material is based upon work supported by the National Science Foundation Graduate Research Fellowship under Grant No. DGE-0940903.

`svydesign`

,
`svyquantile`

,
`svyranktest`

,
`tabfreq`

,
`tabmeans`

,
`tabmulti`

,
`tabglm`

,
`tabcox`

,
`tabgee`

,
`tabfreq.svy`

,
`tabmeans.svy`

,
`tabmulti.svy`

,
`tabglm.svy`

1 |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.