The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Crosstables for descriptive analyses. See documentation at https://danchaltiel.github.io/crosstable/ and browse code at https://github.com/DanChaltiel/crosstable.
as_flextable(compact=TRUE)
with duplicated labels
(#87).crosstable(remove_zero_percent=TRUE)
(#78).as_flextable(ct, remove_header_keys=TRUE)
(#74).body_add_normal(font_size)
and
crosstable_options(normal_font_size)
(#65).body_add_gg2()
(#68).glue()
(#83).x
is NULL
in
body_add_table_section()
(#82).by
is “” (#77).body_add_table_section()
(#73).get_label()
on named vector columns (#72).crosstable(drop_levels)
(#69, #70, #71).transpose()
will work on multi-by crosstables
(#60).by
contains “label” (#56).as_flextable(header_show_n)
not working in single
by
(#54).crosstable_options()
and
added tests (#53).body_add_table_section()
that adds a
table (crosstable or flextable) which can be surrounded by a title
(level 3 by default), a legend, and/or a short sentence.set_label()
now accepts a function as a value
(e.g. set_label(mtcars2, toupper)
).format_fixed(scientific)
can now be
FALSE
to force standard format. Can be set through
options(crosstable_scientific_log=FALSE)
(#49).format_fixed(epsilon)
to format values as
"<epsilon"
. Can be set through
options(crosstable_format_epsilon=0.001)
.body_add_normal("Here is **`some code` in bold & *italic* ** <br> And here is <color:red>red text</color>.")
?body_add_normal
for more insight.NA
(missing values) and “NA” (characters) (#42).as_flextable(by_header)
can now be set through
options(crosstable_by_header=FALSE)
to remove all
headers.body_add_crosstable(header_fontsize)
now
defaults to 1.2*body_fontsize
.as_flextable()
when the
crosstable is empty (#41).write_and_open()
not opening sometimes.crosstable_options()
fail
anymore.Fixes for CRAN checks.
New function transpose_crosstable()
(or simply
t()
), which transposes a crosstable so that by
is in rows instead of columns.
r ct = crosstable(mtcars2, c(mpg, drat), by=am) t_ct = t(ct) as_flextable(t_ct, by_header="Variables")
New function pivot_crosstable()
, which pivots a
crosstable so that variable
is spread as several
columns.
r ct = crosstable(mtcars2, c(mpg, drat)) p_ct = pivot_crosstable(ct) as_flextable(p_ct)
body_add_table_list()
now replaces
body_add_crosstable_list()
and
body_add_flextable_list()
. It allows both crosstables and
flextable (and even dataframes, which are turned to flextables first)
and has a new argument fun_after
to control what comes
after the table. See examples in
?body_add_table_list
.
New function get_percent_pattern()
. See also the new
vignette vignette("percent_pattern")
.
New argument crosstable(drop_levels=TRUE)
to drop
unused levels in factors.
copy_label_from()
now works on dataframes as
well.
as_flextable(header_show_n_pattern)
can now be a
list of names cell
and total
, so that the
“Total” column can be labelled too.
showNA="no"
is now consistent with
stats::addmargins()
,
gtsummary::tbl_cross(missing="no")
, and
janitor::tabyl(show_na=FALSE)
. It now actually removes all
NA
from the equation, instead of not doing much
(#24).
In percent_patern
, the proportion relative to the
total sample p_cell
has been renamed to p_tot
for clarity.
header_show_n=TRUE
and
remove_header_keys=TRUE
while using multiple by variables
(#21).body_add_xxx_legend()
.crosstable()
will not fail if
fisher.test()
fails [#28]forcats::fct_explicit_na()
is not used anymore
[#29]body_add_normal()
now removes ` symbols when showing
code [#31]apply_labels()
fail
anymore [#32]Many thanks to Stephan Daus (@sda030) for his bug reports and feedback on this release.
clean_names_with_labels()
which cleans the names of
the dataframe but keeps the old names as labels. Obviously inspired by
{janitor}
.n_col
, n_row
, and
n_tot
available for percent_pattern
. Also,
every variable has now its counterpart with the _na
suffix
which accounts for missing values.crosstable(mtcars2, cyl, percent_pattern="{p_col} ({n}/{n_col}) [95%CI: {p_col_inf}; {p_col_sup}]")
crosstable(mtcars2, cyl, percent_pattern="{p_col_na} ({n}/{n_col_na}) [95%CI: {p_col_inf}; {p_col_sup}]")
percent_pattern
can now be a list of characters with
names body
, total_row
, total_col
,
and total_all
to also control the pattern in other parts of
the crosstable than the body.crosstable_options()
does not need the “crosstable_”
prefix anymore, so the autocomplete is less clumsy. Options with the
prefix will still work though.
crosstable_options(reset=TRUE)
is deprecated in favor of
the new crosstable_reset_options()
.crosstable_test_args()
and
crosstable_effect_args()
now have arguments to easily
control the non-default parameters.which abs(log10(x))>4
. This can be controlled using
options, e.g. crosstable_options(scientific_log=5)
.body_add_crosstable(allow_break=FALSE)
or using
crosstable_options()
. This is the pendant of
keepnext
in officer/flextable.body_add_crosstable(max_cols=25)
, which
limits the size of crosstables in Word documents. This prevents very
large tables to be wrongly included.peek()
is now usable on non-crosstable objects as well.
as_flextable()
method will be applied on the object if
available, otherwise flextable()
will be applied.import_labels()
when
data_label
doesn’t have the right columns.rename_dataframe_with_labels()
is now deprecated in
favor of the better named rename_with_labels()
.compact()
is now deprecated in favor of
ct_compact()
to avoid the conflict with
purrr::compact()
. It will be removed in the next
version.body_add_crosstable(..., parse=NULL)
will now work as
intended .by_header
can replace the “value” column if
by
has only one stratum, in both as_gt()
and
as_flextable()
(https://github.com/DanChaltiel/crosstable/issues/9).percent_pattern
can now contain functions that start by
“p” (https://github.com/DanChaltiel/crosstable/issues/10).percent_pattern
is actually taken into account when
by
has one single level (https://github.com/DanChaltiel/crosstable/issues/13).import_labels()
now works even if there is a missing
value in the dataframe.body_add_normal()
: **bold**,
*italic*, _underlined_, and `code
`.keep_id
argument in
compact.crosstable()
, which enables
as_flextable(compact=TRUE, keep_id=TRUE)
as_flextable(header_show_n_pattern)
to
change the glue pattern of these group sizes. The default is
{.col} (N={.n})
; you can use {.col_key}
and
{.col_val}
when by
has multiple strata.body_add_table_legend()
and
body_add_figure_legend()
earn an argument
legend_prefix
. Useful when set through global options, for
instance to make every table/figure start with the name of the
study.crosstable_options()
can handle new options for all
those new features.body_add_normal()
(it was only doable through options
before).mtcars2
is now a tibble, with its rownames as a
column named “model”.as_flextable(by_header=FALSE)
now removes the group
header (if by
has only one stratum).as_flextable(header_show_n)
now also works if
by
has multiple strata.as_flextable(header_show_n=TRUE)
adds group size for
all groups.NA
value).body_add_normal()
to add an
extra empty paragraph if there was a reference in the text.body_add_normal()
can be used
without argument.effect=TRUE
when some groups were
present in table()
but not in glm()
due to
missing values.crosstable_options()
and autocompletion. Almost every
argument can now be set using options. See
?crosstable_options
for further details.crosstable_peek_options()
to see which
crosstable option is currently set.num_digits
in crosstable()
.
It was about time!header_show_n
for
as_flextable()
, which adds the group size
(N=xx
) to the header of the flextable.par_before
and
par_after
in respectively
body_add_table_legend()
and
body_add_figure_legend()
, which add an empty paragraph
before/after the legend (for readability).body_replace_text_at_bkms()
, to replace several bookmarks
at once.crosstable_options(crosstable_zero_percent=FALSE)
, which
removes percentages whenever n==0
(as it would always be
0%). I should add it as an argument of crosstable()
one
day…crosstable()
occurring when one of
funs
does not have ellipsis (…) and funs_arg
contains an unused argument.percent_pattern
in replacement of
crosstable(margin=x)
for better control over proportion
format. Introduces the possibility of displaying confidence intervals
(using Wilson score method) along with proportions.body_add_crosstable_list()
to add a list
of crosstables all at once, separated by some customizable titles. Also
works with flextables and plain old dataframes.crosstable_padding_v
for
as_flextable()
to manage vertical padding. Also available
as the global option crosstable_padding_v
.crosstable_{arg}
for almost all
arguments. See ?crosstable_options
for more details.as_flextable()
occurring when
showNA=TRUE
(header row was disappearing)format_fixed()
to return a numeric value (“Error: Can’t
combine ..1$value
..2$value
by
when it is
a factormaster
to main
by
! You can now write
crosstable(mtcars, c(mpg, gear), by=c(am, vs)) %>% as_flextable()
.generate_autofit_macro()
which creates a file that should
then be imported into MS Word.body_add_crosstable()
gains a padding_v
argument to control the vertical padding of all rows.body_add_title()
and body_add_xxx_legend)
gain a glue functionality. You can now write
body_add_title("The iris dataset (nrow={nrow(iris)})", 1)
.as_workbook()
can now take a named list of crosstables,
that will be considered as sheets.percent
in
format_fixed(percent=TRUE/FALSE)
to easily format
percentages.style
is deprecated in
body_add_table_legend()
and
body_add_image_legend()
in favor of
name_format
.effect
calculations that
were done by column instead of rows. That might change some outputs but
not their meaning.body_add_normal()
now removes duplicated spaces
(squish) in its input by default. Use squish=FALSE
to
override.docx_bookmarks2()
gains a target
parameter.effect
calculation now takes into account the reference
level (first level of a factor).body_add_crosstable()
rightly takes
body_fontsize
and header_fontsize
into
account.burglr::burgle()
to avoid
dependency: nortest::ad.test()
and
DescTools::CochranArmitageTest()
.testthat
(https://github.com/DanChaltiel/crosstable/pull/3).funs
, especially with
multiple combinations of named and unnamed functions, including lambda
or anonymoussimplify=FALSE
in get_label()
to get a
list instead of a vector?crosstable_options
for the comprehensive list.apply_labels()
(inspired by
expss
’s), copy_label_from()
and
rename_dataframe_with_labels()
as_workbook()
to export a crosstable as a
formatted openxlsx
Excel workbook, for copypasting
purpose.peek()
to open a crosstable in a temporary Word
document, as copy-pasting in RStudio’s viewer is very limited.<NA>
(missing).funs
was not found if
declared in another environment.body_add_figure_legend()
and
body_add_table_legend()
.bookmark
argument to set a reference, then write
"\\@ref(my_bkm)"
inside body_add_normal()
to
call it.body_add_list()
and
body_add_list_item()
. These will unfortunately not work
with the default officer
template.officer
functions:docx_bookmarks2()
, which list bookmarks found in the
header and footer as wellbody_add_img2()
, and body_add_gg2()
, which
win a units=c("in", "cm", "mm")
argumentwrite_and_open()
, an alternative to
print()
for documents, which tries to open it right
away....
) use in crosstable()
has
been deprecated for a more “tidy” syntax. Write
crosstable(mtcars2, c(disp, vs))
instead of
crosstable(mtcars2, disp, vs)
. Ellipsis will be defunct in
future v1.0.crosstable(.vars=)
has been renamed to
crosstable(cols=)
.moystd()
has been renamed to
meansd()
.body_add_glued()
has been superseded by
body_add_normal()
, which inherits all functionalities and
more.gt
tables (with
as_gt()
) for those who like them better than
flextable
sofficer
: added
body_add_figure_legend()
and fontsize
options
for body_add_crosstable()
save_labels()
to ease working with
dplyr
meanCI()
an additional summary function to use in
crosstable()
’s funs
argumentDate
variablesmoystd()
to meansd()
Date
variables. Format
can be specified in funs_arg
with the
date_format
key.format_fixed()
, rounding with the right number of
decimals (including zeros)import_labels()
, which apply labels taken from a
source dataframe (name, label) to another dataframemargin="none"
option, to remove percentages and
keep only countscross_to_flextable()
(ctf()
) was
deprecated and renamed as_flextable()
(#207)compact()
biostat2
package.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.