Remove/Replace/Extract Numbers

Usage

rm_number(text.var, trim = !extract, clean = TRUE, pattern = "@rm_number", replacement = "", extract = FALSE, dictionary = getOption("regex.library"), ...)
as_numeric(x)
as_numeric2(x)

Arguments

text.var
The text variable.
trim
logical. If TRUE removes leading and trailing white spaces.
clean
trim logical. If TRUE extra white spaces and escaped character will be removed.
pattern
A character string containing a regular expression (or character string for fixed = TRUE) to be matched in the given character vector. Default, @rm_number uses the rm_number regex from the regular expression dictionary from the dictionary argument.
replacement
Replacement for matched pattern.
extract
logical. If TRUE the numbers are extracted into a list of vectors.
dictionary
A dictionary of canned regular expressions to search within if pattern begins with "@rm_".
x
a character vector to convert to a numeric vector.
...
Other arguments passed to gsub.

Value

rm_number - Returns a character string with number removed.

as_numeric - Returns a list of vectors of numbers.

as_numeric2 - Returns an unlisted vector of numbers.

Description

rm_number - Remove/replace/extract number from a string (works on numbers with commas, decimals and negatives).

as_numeric - A wrapper for as.numeric(gsub(",", "", x)), which removes commas and converts a list of vectors of strings to numeric. If the string cannot be converted to numeric NA is returned.

as_numeric2 - A convenience function for as_numeric that unlists and returns a vector rather than a list.

References

The number regular expression was created by Jason Gray.

Examples

x <- c("-2 is an integer. -4.3 and 3.33 are not.", "123,456 is 0 alot -123456 more than -.2", "and 3456789123 fg for 345.", "fg 12,345 23 .44 or 18.", "don't remove this 444,44", "hello world -.q") rm_number(x)
[1] "is an integer. and are not." "is alot more than" "and fg for ." "fg or ." [5] "don't remove this 444,44" "hello world -.q"
rm_number(x, extract=TRUE)
[[1]] [1] "-2" "-4.3" "3.33" [[2]] [1] "123,456" "0" "-123456" "-.2" [[3]] [1] "3456789123" "345" [[4]] [1] "12,345" "23" ".44" "18" [[5]] [1] NA [[6]] [1] NA
##Convert to numeric as_numeric(rm_number(x, extract=TRUE)) # retain list
[[1]] [1] -2.00 -4.30 3.33 [[2]] [1] 123456.0 0.0 -123456.0 -0.2 [[3]] [1] 3456789123 345 [[4]] [1] 12345.00 23.00 0.44 18.00 [[5]] [1] NA [[6]] [1] NA
as_numeric2(rm_number(x, extract=TRUE)) # unlist
[1] -2.00 -4.30 3.33 123456.00 0.00 -123456.00 -0.20 3456789123.00 345.00 [10] 12345.00 23.00 0.44 18.00 NA NA