allvariables.type.change <- function(data, # a data frame
list, # a list of (varname,vartype) pairs
data2) { # another data frame (optional)
data.variables <- names(data)
for (var.pair in list) {
varname <- var.pair[1]
if (!varname %in% data.variables) { next }
vartype <- var.pair[2]
if (class(data[[varname]]) != vartype) {
data[[varname]] <- variable.type.change(data,varname,vartype,data2)
}
}
return(data)
}
variable.type.change <- function(data, varname, vartype, data2) {
if (vartype == "factor") {
if (missing(data2)) {
return(as.factor(data[[varname]]))
} else {
return(factor(data[[varname]],
levels = union(unique(data[[varname]]),
unique(data2[[varname]]))
))
}
} else if (vartype == "numeric") {
return(as.numeric(data[[varname]]))
} else if (vartype == "integer") {
return(as.integer(data[[varname]]))
} else if (vartype == "character") {
return(as.character(data[[varname]]))
} else if (vartype == "Date") {
return(as.Date(data[[varname]]))
} else if (vartype == "unclear") {
warning(paste0("Variable ",varname," has commanded type 'unclear'"))
return(data[[varname]])
} else {
stop(paste0("Bug: ",vartype," is not a recognized type."))
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.