Introducing <percent> vectors, a re-imagined and simplified approach
to working with percentages in R.
It is implemented as a lightweight S3 object that automatically formats proportions as percentages, simplifying any workflow that uses percentages at any stage of analysis.
Rather than:
x <- c(0.25, 0.5, 0.75)
paste0(x * 100, "%")
## [1] "25%" "50%" "75%"
You can now instead write:
x <- c(0.25, 0.5, 0.75)
as_percent(x)
## [1] "25%" "50%" "75%"
as_percent() keeps the proportions as-is and simply prints them as
percentages.
p <- as_percent(0.000567)
p
## [1] "0.06%"
as.double(p) # Under-the-hood nothing is modified
## [1] 0.000567
This allows us to use <percent> vectors throughout our script without
ever needing to convert to a character vector of percentages.
Maths operations are also possible with <percent> such as
multiplication, division, rounding, summary statistics, etc. The more
traditional workflow would require a lot more effort to do these same
operations.
A percent vignette has been created to help introduce and explain this new feature.
file_size() has been deprecated as we believe it is no longer relevant (#11).
Please let us know if you still have a use for it, otherwise it will be removed
in a future version.age_calculate() is now more robust in uncommon situations such as leap years, or if a date is supplied as a date time. Previously, it would sometimes give incorrect values for these types of edge cases.postcode() is now format_postcode(); age_group() is now create_age_groups() and fin_year() is now extract_fin_year().age_from_chi() due to a helper
function expected_age() caused the tests fail when the new year comes. It has
been replaced with a fixed reference date.Fix a bug in extract_fin_year() to make sure financial years are displayed
correctly from 1999/20 to 2008/09.
A new article has been added to the documentation - Working with CHI numbers.
The {gdata} import has been dropped and replaced with {scales}.
extract_fin_year() is now much faster and will use less memory, especially for smaller vectors (1 to 1,000).
format_postcode() is now faster and also gains a quiet parameter, the default value is FALSE but setting it to TRUE will skip some of the checks and messages, this is useful when using format_postcode() to 'clean-up' and format a vector of postcodes, rather than wanting to check them. Because of the skipped checks quiet = TRUE should also run faster.
The installation instructions in the README have been updated.
Improved chi_check() to make it more efficient and run faster.
Improved the "Using phsmethods" section in the README to be shorter and more accessible.
Update all errors, warnings and messages to use {cli}.
Improve errors when giving incorrect types to some functions.
Three functions renamed to improve code clarity: postcode() to format_postcode(); age_group() to create_age_groups(); fin_year() to extract_fin_year(). The old functions will still work but will produce a warning. After a reasonable amount of time, they will be removed completely.
New functions added:
age_calculate()(#65, @Nic-chr);
dob_from_chi()(#42, @Moohan); and
age_from_chi()(#42, @Moohan)
Change the output for chi_check so that empty string ("") reports as missing (#76)
New functions added: age_group()(#23, @chrisdeans); chi_check()(#30, @graemegowans); chi_pad()(#30, @graemegowans); and match_area()(#13, @jvillacampa).
The first argument of postcode() is now x, as opposed to string. This is unlikely to break much, if any, existing code. postcode() is also now slightly faster.
phsmethods no longer imports stringi.
phsmethods now depends on a version of R >= 2.10.
Jack Hannah is no longer a maintainer.
file_size(), fin_year(), qtr(), qtr_end(), qtr_next() and qtr_prev() now use inherits(x, "y") instead of class(x) == "y" to check class. The reasoning is explained in this blogpost by Martin Maechler.
The performance of fin_year() has been improved. The function now extracts the unique date(s) from the input, calculates the associated financial year(s), and joins to the original input. This is in contrast with the original method, which directly calculated the financial year of all input dates individually.
file_size(), fin_year(), postcode(), qtr(), qtr_end(), qtr_next() and qtr_prev() functions added.