Convert a Vector, Matrix or Data Frame Into Numeric Values If Possible
asNumericIfPossible.Rd
This function converts vectors and matrices of all kinds to numeric
. The function can
also be used to convert all columns of a data.frame
to class numeric
for
which this conversion is possible i.e. without creating NA
when it fails.
Non-convertible columns are maintained.
Usage
asNumericIfPossible(x, maintain.factor.scores = TRUE, force.string = TRUE,
transform.factors = TRUE, varName = NULL)
Arguments
- x
A vector or data frame which should be converted.
- maintain.factor.scores
Logical: If
TRUE
, conversion of the factor levels is attempted (like inas.numeric(as.character(f))
). IfFALSE
, the internal codes of the factor are returned (like inas.numeric(f)
). See 'Details'. This argument is only evaluated iftransform.factors = TRUE
.- force.string
Logical indicating whether columns should be force to numeric, even if NAs are induced. If
FALSE
, affected columns are maintained. IfTRUE
, conversion is forced.- transform.factors
Logical indicating whether columns of class
factor
should be converted. IfFALSE
, columns of classfactor
are maintained. IfTRUE
, conversion of factors is attempted.- varName
Optional: Name of the corresponding variable. Doesn't have to be changed by user.
Details
In R, factors may represent ordered categories or categorical variables.
Depending on the meaning of the variable, a conversion of the nominal values
(of a factor variable) to numeric values may be desirable or not. The arguments
transform.factors
and maintain.factor.scores
specify if and how
factor variables should be treated. See examples.
Examples
dat <- data.frame(X1 = c("1",NA,"0"), X2 = c("a",NA,"b"),
X3 = c(TRUE,FALSE,FALSE), X4 = as.factor(c("a",NA,"b")),
X5 = as.factor(c("5","6","7")), stringsAsFactors = FALSE)
str(dat)
#> 'data.frame': 3 obs. of 5 variables:
#> $ X1: chr "1" NA "0"
#> $ X2: chr "a" NA "b"
#> $ X3: logi TRUE FALSE FALSE
#> $ X4: Factor w/ 2 levels "a","b": 1 NA 2
#> $ X5: Factor w/ 3 levels "5","6","7": 1 2 3
asNumericIfPossible(dat)
#> Warning: 'X2' has been coerced to numeric, NAs have been induced.
#> Warning: 'X4' has been coerced to numeric, NAs have been induced.
#> X1 X2 X3 X4 X5
#> 1 1 NA 1 NA 5
#> 2 NA NA 0 NA 6
#> 3 0 NA 0 NA 7
asNumericIfPossible(dat, transform.factors=TRUE,
maintain.factor.scores=FALSE)
#> Warning: 'X2' has been coerced to numeric, NAs have been induced.
#> X1 X2 X3 X4 X5
#> 1 1 NA 1 1 1
#> 2 NA NA 0 NA 2
#> 3 0 NA 0 2 3
asNumericIfPossible(dat, transform.factors=TRUE,
maintain.factor.scores=TRUE)
#> Warning: 'X2' has been coerced to numeric, NAs have been induced.
#> Warning: 'X4' has been coerced to numeric, NAs have been induced.
#> X1 X2 X3 X4 X5
#> 1 1 NA 1 NA 5
#> 2 NA NA 0 NA 6
#> 3 0 NA 0 NA 7