ez.num | R Documentation |
convert a column (or all columns) in a data frame, or a vector into numeric type, call type.convert or as.numeric
ez.num(
x,
col = NULL,
force = FALSE,
print2scr = TRUE,
na.strings = c("-", "", ".", "NA", "na", "N/A", "n/a", "NaN", "nan"),
...
)
x |
a character vector, data frame, list, or a factor |
col |
internally evaluated by eval('dplyr::select()')()
|
force |
T/F. a string vec/col that only has string of num or na.strings, eg c('1','2')->c(1,2) will always become num.
|
na.strings |
case sensitive strings that will be coverted to NA even if force=F. The function will NOT do a trimws(x,'both') before conversion, supposedly up to this step, spaces have already been trimmed. |
Both value and variable label attributes will be removed when converting variables to characters.
see http://stackoverflow.com/a/22701462/2292993
returns a converted vector, data frame
with ez.2value
if x is a factor with chars, will be converted to 1 2 3 etc, see its example
ez.num
keeps the same char as is
ez.2value
Other data transformation functions:
ez.2char()
,
ez.2factor()
,
ez.2label()
,
ez.2long()
,
ez.2lower()
,
ez.2value()
,
ez.2wide()
,
ez.compute()
,
ez.del()
,
ez.label.get()
,
ez.label.set()
,
ez.labels.get()
,
ez.labels.set()
,
ez.move()
,
ez.newcol()
,
ez.recode()
,
ez.recols()
,
ez.recol()
,
ez.rename()
,
ez.replace()
,
ez.rncols()
,
ez.rncol()
,
ez.select()
,
ez.sort()
,
ez.split()
,
ez.str()
,
ez.unique()
,
left_join()
ez.num(c(1,2,3,NA),force=T) # -> c(1,2,3,NA), no change, directly pass through
ez.num(c(1,2,3,NA),force=F) # -> c(1,2,3,NA), no change, directly pass through
ez.num(c('1','2','3',NA),force=F) # -> c(1,2,3,NA)
ez.num(c('1','2','3',NA),force=T) # -> c(1,2,3,NA)
ez.num(c('1','','NA',"N/A",NA),force=F) # -> c(1,NA,NA,NA,NA) # na.strings treated as NA even if force=F
ez.num(c('1','','NA',"N/A",NA),force=T) # -> c(1,NA,NA,NA,NA)
ez.num(c('1','N/A','a',"NA",NA),force=F) # -> same vector # more than na.strings
ez.num(c('1','N/A','a',"NA",NA),force=T) # -> c(1,NA,NA,NA,NA)
ez.num(factor(c(1,2,3,NA)),force=F) # -> factor [1,2,3,NA]
ez.num(factor(c(1,2,3,NA)),force=T) # -> c(1,2,3,NA)
ez.num(factor(c('1','2','3',NA)),force=F) # -> factor [1,2,3,NA]
ez.num(factor(c('1','2','3',NA)),force=T) # -> c(1,2,3,NA)
ez.num(factor(c('1','','NA',"N/A",NA)),force=F) # -> factor ['1','','NA',"N/A",NA]
ez.num(factor(c('1','','NA',"N/A",NA)),force=T) # -> c(1,NA,NA,NA,NA)
ez.num(factor(c('1','N/A','a',"NA",NA)),force=F) # -> same factor # more than na.strings
ez.num(factor(c('1','N/A','a',"NA",NA)),force=T) # -> c(1,NA,NA,NA,NA)
d <- data.frame(char = letters[1:5],
fake_char = as.character(1:5),
fac = factor(1:5),
char_fac = factor(letters[1:5]),
mixed_char = c(1,2,'N/A','4','f'),
num = 1:5, stringsAsFactors = FALSE)
# char fake_char fac char_fac mixed_char num
# 1 a 1 1 a 1 1
# 2 b 2 2 b 2 2
# 3 c 3 3 c N/A 3
# 4 d 4 4 d 4 4
# 5 e 5 5 e f 5
sapply(d, class)
# char fake_char fac char_fac mixed_char num
# "character" "character" "factor" "factor" "character" "integer"
sapply(ez.num(d), class)
char fake_char fac char_fac mixed_char num
"character" "integer" "factor" "factor" "character" "integer"
ez.num(d,col=NULL,force=F)
ez.num(d,col=NULL,force=T)
ez.num(d,col=c("char","mixed_char"),force=F)
ez.num(d,col=c("char","mixed_char"),force=T)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.