rescale {datawizard} | R Documentation |
Rescale Variables to a New Range
Description
Rescale variables to a new range. Can also be used to reverse-score variables
(change the keying/scoring direction), or to expand a range.
Usage
rescale(x, ...)
change_scale(x, ...)
## S3 method for class 'numeric'
rescale(
x,
to = c(0, 100),
multiply = NULL,
add = NULL,
range = NULL,
verbose = TRUE,
...
)
## S3 method for class 'data.frame'
rescale(
x,
select = NULL,
exclude = NULL,
to = c(0, 100),
multiply = NULL,
add = NULL,
range = NULL,
append = FALSE,
ignore_case = FALSE,
regex = FALSE,
verbose = FALSE,
...
)
Arguments
x |
A (grouped) data frame, numeric vector or factor.
|
... |
Arguments passed to or from other methods.
|
to |
Numeric vector of length 2 giving the new range that the variable
will have after rescaling. To reverse-score a variable, the range should
be given with the maximum value first. See examples.
|
multiply |
If not NULL , to is ignored and multiply will be used,
giving the factor by which the actual range of x should be expanded.
For example, if a vector ranges from 5 to 15 and multiply = 1.1 , the current
range of 10 will be expanded by the factor of 1.1, giving a new range of
11. Thus, the rescaled vector would range from 4.5 to 15.5.
|
add |
A vector of length 1 or 2. If not NULL , to is ignored and add
will be used, giving the amount by which the minimum and maximum of the
actual range of x should be expanded. For example, if a vector ranges from
5 to 15 and add = 1 , the range will be expanded from 4 to 16. If add is
of length 2, then the first value is used for the lower bound and the second
value for the upper bound.
|
range |
Initial (old) range of values. If NULL , will take the range of
the input vector (range(x) ).
|
verbose |
Toggle warnings.
|
select |
Variables that will be included when performing the required
tasks. Can be either
a variable specified as a literal variable name (e.g., column_name ),
a string with the variable name (e.g., "column_name" ), or a character
vector of variable names (e.g., c("col1", "col2", "col3") ),
a formula with variable names (e.g., ~column_1 + column_2 ),
a vector of positive integers, giving the positions counting from the left
(e.g. 1 or c(1, 3, 5) ),
a vector of negative integers, giving the positions counting from the
right (e.g., -1 or -1:-3 ),
one of the following select-helpers: starts_with() , ends_with() ,
contains() , a range using : or regex("") . starts_with() ,
ends_with() , and contains() accept several patterns, e.g
starts_with("Sep", "Petal") .
or a function testing for logical conditions, e.g. is.numeric() (or
is.numeric ), or any user-defined function that selects the variables
for which the function returns TRUE (like: foo <- function(x) mean(x) > 3 ),
ranges specified via literal variable names, select-helpers (except
regex() ) and (user-defined) functions can be negated, i.e. return
non-matching elements, when prefixed with a - , e.g. -ends_with("") ,
-is.numeric or -(Sepal.Width:Petal.Length) . Note: Negation means
that matches are excluded, and thus, the exclude argument can be
used alternatively. For instance, select=-ends_with("Length") (with
- ) is equivalent to exclude=ends_with("Length") (no - ). In case
negation should not work as expected, use the exclude argument instead.
If NULL , selects all columns. Patterns that found no matches are silently
ignored, e.g. extract_column_names(iris, select = c("Species", "Test"))
will just return "Species" .
|
exclude |
See select , however, column names matched by the pattern
from exclude will be excluded instead of selected. If NULL (the default),
excludes no columns.
|
append |
Logical or string. If TRUE , recoded or converted variables
get new column names and are appended (column bind) to x , thus returning
both the original and the recoded variables. The new columns get a suffix,
based on the calling function: "_r" for recode functions, "_n" for
to_numeric() , "_f" for to_factor() , or "_s" for
slide() . If append=FALSE , original variables in x will be
overwritten by their recoded versions. If a character value, recoded
variables are appended with new column names (using the defined suffix) to
the original data frame.
|
ignore_case |
Logical, if TRUE and when one of the select-helpers or
a regular expression is used in select , ignores lower/upper case in the
search pattern when matching against variable names.
|
regex |
Logical, if TRUE , the search pattern from select will be
treated as regular expression. When regex = TRUE , select must be a
character string (or a variable containing a character string) and is not
allowed to be one of the supported select-helpers or a character vector
of length > 1. regex = TRUE is comparable to using one of the two
select-helpers, select = contains("") or select = regex("") , however,
since the select-helpers may not work when called from inside other
functions (see 'Details'), this argument may be used as workaround.
|
Value
A rescaled object.
Selection of variables - the select
argument
For most functions that have a select
argument (including this function),
the complete input data frame is returned, even when select
only selects
a range of variables. That is, the function is only applied to those variables
that have a match in select
, while all other variables remain unchanged.
In other words: for this function, select
will not omit any non-included
variables, so that the returned data frame will include all variables
from the input data frame.
See Also
See makepredictcall.dw_transformer()
for use in model formulas.
Other transform utilities:
normalize()
,
ranktransform()
,
reverse()
,
standardize()
Examples
rescale(c(0, 1, 5, -5, -2))
rescale(c(0, 1, 5, -5, -2), to = c(-5, 5))
rescale(c(1, 2, 3, 4, 5), to = c(-2, 2))
# Specify the "theoretical" range of the input vector
rescale(c(1, 3, 4), to = c(0, 40), range = c(0, 4))
# Reverse-score a variable
rescale(c(1, 2, 3, 4, 5), to = c(5, 1))
rescale(c(1, 2, 3, 4, 5), to = c(2, -2))
# Data frames
head(rescale(iris, to = c(0, 1)))
head(rescale(iris, to = c(0, 1), select = "Sepal.Length"))
# One can specify a list of ranges
head(rescale(iris, to = list(
"Sepal.Length" = c(0, 1),
"Petal.Length" = c(-1, 0)
)))
# "expand" ranges by a factor or a given value
x <- 5:15
x
# both will expand the range by 10%
rescale(x, multiply = 1.1)
rescale(x, add = 0.5)
# expand range by different values
rescale(x, add = c(1, 3))
# Specify list of multipliers
d <- data.frame(x = 5:15, y = 5:15)
rescale(d, multiply = list(x = 1.1, y = 0.5))
[Package
datawizard version 0.12.2
Index]