{smcl} {viewerjumpto "Syntax" "basetable##syntax"}{...} {viewerjumpto "Basetable varlist" "basetable##varlist"}{...} {viewerjumpto "Basetable options" "basetable##options"}{...} {viewerjumpto "Examples" "basetable##examples"}{...} {viewerjumpto "Author and support" "basetable##author"}{...} {title:Title} {p2colset 5 10 22 2}{...} {p2col :} Comparing a set of risk factors or effects with respect to a categorical variable - basetable{p_end} {p2colreset}{...} {title:Summary} {p2colset 5 10 10 2}{...} {p2col :}The command basetable is a simple yet highly efficient tool for interactively building the first table required in most medical/epidemiological papers. {p_end} {p2col :}The typical layout of these tables is a grouping (categorical) variable as column header and then a set of rows of different variables being compared by each group in the header and in a total. {p_end} {p2col :}When the interactive table building is over, the result can be inserted into one or more sheets in a excel workbook.{p_end} {p2col :}If the labelling of variables and values have been done carefully the table outputs in the excel workbooks will be almost publication ready.{p_end} {p2col :}The command basetable works from Stata 12 and onwards except for the option toxl. In Stata version 12 use the option style(csv) and the modifier using to specify a csv file to save the csv output in.{p_end} {marker syntax}{...} {title:Syntax} {p 8 14 2}{cmd:basetable} {it:column_variable} [{it:summary_variables}] [if] [in] [using] [{cmd:,} {it:{help basetable##options:options}}] {p_end} {synoptset 22 tabbed}{...} {marker summary_variables}{...} {synopthdr:Arguments} {synoptline} {synopt :{opt column_variable}}The first argument must be a (categorical) variable for subgrouping or the text "_none" for no column variable.{p_end} {synopt :{opt summary_variables}}The rest of the arguments are either variable names or variable lists followed by with suboptions inside parentheses or headers. {p 34 36}* Headers (in square brackets) - Headers are set by a text string in square brackets. The syntax for the string inside the square brackets is:{break} {cmd:title_text [#] [, local_if]}{break} The different parts of the string are:{break}{break} - The title_text is a plain text string.{break} - The hashtag (#) is an option for adding a sub-count.{break} - The local_if is a Stata if expression.{break} - The sub-count from the hashtag matches the sub-condition. {p_end} {p 34 36}* Categorical variables are specified by their name followed by an option string in brackets. Possible option strings are:{break} - r or R (row percentages){break} - c or C (column percentages){break} - or label value (Show only the row for this value). After a comma, a second argument can be added: r, R, c, C as above, or a ci for a Wald confidence interval.{p_end} {p 36 36}The p-value is by default from a chi-square test. Fisher's exact test can be chosen instead by option {opt e:xact}.{p_end} {p 34 36}* Continuous variables are specified by their name followed by an option string in brackets.{break} An option string is a numeric format (eg %6.2f) and possibly, a local report specification separated after a comma.{break} Types of report specifications are:{break} - sd (mean and sd, default),{break} - ci (mean and confidence interval),{break} - gci (geometric mean and confidence interval),{break} - pi (mean and prediction interval),{break} - iqr (median and interquartile range),{break} - iqi (median and interquartile interval),{break} - idr (median and interdecentile range),{break} - idi (median and interdecentile interval),{break} - imr (median and range), or{break} - imi (median, min, and max){p_end} {p 36 36}When the mean is reported the p-value is based on an ANOVA test, and when the median is reported the p-value is based on a Kruskal Wallis test.{p_end} {p 36 36}Centile calculation are similar to {help centile}, not {help summarize}. {p_end} {synoptline} {p2colreset}{...} {synoptset 24 tabbed}{...} {marker options}{...} {synopthdr:options} {synoptline} {synopt :{opt l:og}}Show the underlying Stata output{p_end} {synopt :{opt n:thousands}}Add thousands separator to n values{p_end} {synopt :{opt pc:tformat}}Alter the format used for the percentages for the categorical summary variables. The argument must be a numeric format{p_end} {synopt :{opt pv:format}}Alter the format used for the P value. The argument must be in a numeric format. There is sub-option {opt t:op} placing the p-value at the top{p_end} {synopt:{opt e:xact}{opt (#)}}report Fisher's exact test instead of chi-square tests. The recommended value is 1 and 0 means no exact test.{break} If an error occurs, try with 5 and higher numbers. See {help tabulate:tabulate}.{p_end} {synopt :{opt c:ontinuousreport}}Specify overall default continuous report. The values must be one of sd, iqr, iqi, idr, idi, imr, imi, ci, gci or pi{p_end} {synopt :{opt ca:tegoricalreport}}Specify overall default categorical report. The values to set is n for count or p for percentages. Default is count (percentages).{p_end} {synopt :{opt notop:count}}Exclude the first row with count and percentages for row columns{p_end} {synopt :{opt not:otal}}Exclude the Total column.{p_end} {synopt :{opt nop:value}}Exclude the P-value column.{p_end} {synopt :{opt col:umnorder}}Chose sets of column number (>1, <8) to show.{p_end} {synopt:{opt cap:tion(string)}}Caption for the output. Same as the {opt ti:tle} option.{p_end} {synopt:{opt ti:tle(string)}}Title for the output. Same as the {opt cap:tion} option. The {opt ti:tle} option overwrites the {opt cap:tion} option.{p_end} {synopt:{opt to:p(string)}}A string containing text prior to table content. Default is dependent of the value of the style option{p_end} {synopt:{opt u:ndertop(string)}}A string containing text between header and table content. Default is dependent of the value of the style option{p_end} {synopt:{opt b:ottom(string)}}A string containing text after to table content. Default is dependent of the value of the style option{p_end} {synopt :{opt m:issing}}Show missing report to the right of the table{p_end} {synopt :{opt sm:all}}Specify the limit for being small wrt. hidesmall. Default is 5.{p_end} {synopt :{opt h:idesmall}}Hide data when count values are less than small (default 5).{break} {red: Note that the number less than "small" sometimes can be deduced from surrounding values}{p_end} {synopt:{opt ps:eudo}}Option for using pseudo percentiles. Pseudo percentiles are found by sorting the values and averaging a number of values around each position. The averages are used to get percentiles. Option {opt sm:all} is used to set the average size {p_end} {synopt :{opt st:yle}}The output can be shown in the formats: smcl, csv, html, latex or tex, or md. The default is smcl{p_end} {synopt :{opt r:eplace}}The styled output can be saved into a file specified by using.{break} If an existing file should be replaced in the process, replace should be set{p_end} {synopthdr:version 13 and up} {synopt:{opt toxl:(string)}}A string containing up to 5 values, separated by a comma. The values are:{break} - path and filename on the excel book to save in. Excel book suffix is set/reset to {cmd:xls} for Stata 13 and to {cmd:xlsx} for Stata 14 and above{break} - the sheet name to save output in{break} - (Optional) replace - replace/overwrite the content in the sheet{break} - (Optional) row, column numbers for the upper right corner of the table in the sheet{break} - (Optional) columnn widths in parentheses. If more columns than widths the last column width is used for the rest {p_end} {synopt:{opt todocx:(string)}}A string containing one or two values separated by a comma. The values are:{break} * path and filename on the excel book to save in.{break} * (Optional) replace - replace/overwrite the content in the sheet{break} {p_end} {synoptline} {p2colreset}{...} {marker examples}{...} {title:Examples} {phang}Retrieve a sample dataset (required for the rest of the clickable commands below):{p_end} {phang}{stata quietly basetable_example_data}{p_end} {phang}Continuous presentation:{p_end} {phang}{stata basetable low age(%6.2f) age(%6.2f,sd) age(%6.2f, ci)}{p_end} {phang}Categorical presentation:{p_end} {phang}{stata basetable low race(c) race(r) race(white) race(white,r) race(white,ci)}{p_end} {phang}Adding a missing report:{p_end} {phang}{stata basetable low race(c) age(%6.2f), missing}{p_end} {phang}Adding sub report on young (age < 20) mothers:{p_end} {phang}{stata basetable low race(c) age(%6.2f) [Young mothers #, if age < 20] race(c) age(%6.2f), missing}{p_end} {phang}Save table as tex/latex in file tbl1.tex at current directory:{p_end} {phang}{stata basetable low race(c) age(%6.2f) using tbl1.tex, style(tex)}{p_end} {phang}To see current directory:{p_end} {phang}{stata cd}{p_end} {phang}To see file content:{p_end} {phang}{stata type tbl1.tex}{p_end} {phang}Save tables for "all" and "young mothers" in sheets all and young_mothers in the Excel workbook tbls.xls(x) at current directory:{p_end} {phang}{stata basetable low race(c) age(%6.2f), toxl(tbls, all)}{p_end} {phang}{stata basetable low race(c) age(%6.2f) if age < 20, toxl(tbls, young_mothers)}{p_end} {phang}To see current directory:{p_end} {phang}{stata cd}{p_end} {phang}To see the Excel workbook (stata 13):{p_end} {phang}{stata shell tbls.xls}{p_end} {phang}To see the Excel workbook (stata 14 and up):{p_end} {phang}{stata shell tbls.xlsx}{p_end} {phang}Save tables for "all" and "young mothers" in sheets all at row 6 and column 8:{p_end} {phang}{stata basetable low race(c) age(%6.2f), toxl(tbls, all, replace,6,8)}{p_end} {phang}To see the Excel workbook (stata 13):{p_end} {phang}{stata shell tbls.xls}{p_end} {phang}To see the Excel workbook (stata 14 and up):{p_end} {phang}{stata shell tbls.xlsx}{p_end} {phang}Save table for "all" the Word document tbl.docx at current directory:{p_end} {phang}{stata basetable low race(c) age(%6.2f), todocx(tbl, all)}{p_end} {phang}To see the Word document (One can not add several tables to the same Word file):{p_end} {phang}{stata shell tbl.docx}{p_end} {phang}Anonymize individuals by hiding small counts and pseudo percentiles:{p_end} {phang}{stata basetable low age(%6.2f) ftv(c), hidesmall pseudo}{p_end} {phang}Using group renaming to add prefix cat_ to all categorical variables:{p_end} {phang}{stata rename (race ftv smoke) cat_=}{p_end} {phang}Handling all renamed variables in the same way:{p_end} {phang}{stata basetable low cat*(c), missing}{p_end} {marker author}{...} {title:Author and support} {phang}{bf:Author:}{break} Niels Henrik Bruun, {break} Aalborg University Hospital {p_end} {phang}{bf:Support:} {break} {browse "mailto:niels.henrik.bruun@gmail.com":niels.henrik.bruun@gmail.com} {p_end}