factor_to_lab_int {labelr}R Documentation

Convert a Factor Variable Column to Value-labeled Integer Variable Column

Description

factor_to_lab_int converts a factor variable (column) of a data.frame to a value-labeled integer variable and converts the factor level labels to labelr value labels, returning the modified data.frame.

Usage

factor_to_lab_int(data, var)

f2int(data, var)

Arguments

data

a data.frame object.

var

the (unquoted) name of a factor variable found in data.

Details

Note 1: f2int is a compact alias for factor_to_lab_int: they do the same thing, and the former is easier to type.

Note 2: factor_to_lab_int() is NOT an "undo" for lab_int_to_factor(). factor_to_lab_int() will assign sequential integer values from 1 to k (the number of distinct factor levels) in factor level order, and this will not necessarily match the integer values of a variable previously subjected to a lab_int_to_factor() call. See extended second example below for demo.

Value

a data.frame.

Examples

class(iris[["Species"]])
iris_df <- factor_to_lab_int(iris, Species)
class(iris_df[["Species"]])
get_val_labs(iris_df, "Species")

# copy data.frame mtcars to mt2
carb_orig_int <- mtcars

# !NOTE! factor_to_lab_int() is NOT an "undo" for lab_int_to_factor()
# Integer values will be sequential integers in factor level order
# Demo this

# add value labels to mtcars$carb; and assign data.frame to carb_orig_int
carb_orig_int <- add_val_labs(
  data = mtcars,
  vars = "carb",
  vals = c(1, 2, 3, 4, 6, 8),
  labs = c(
    "1c", "2c", # a tad silly, but these value labels will demo the principle
    "3c", "4c",
    "6c", "8c"
  )
)

# carb as labeled numeric
class(carb_orig_int$carb) # numeric
levels(carb_orig_int$carb) # none, not a factor
head(carb_orig_int$carb, 3) # compare to carb_to_int (below)
mean(carb_orig_int$carb) # compare to carb_to_int (below)
lm(mpg ~ carb, data = carb_orig_int) # compare to carb_to_int (below)
(adj_r2_int <- summary(lm(mpg ~ carb, data = carb_orig_int))$adj.r.squared)
AIC(lm(mpg ~ carb, data = carb_orig_int)) # compare to carb_to_int (below)

# carb as factor
carb_fac <- carb_orig_int # copy carb_orig_int to new data.frame carb_fac
carb_fac <- lab_int_to_factor(carb_fac, carb) # alias int2f() also works
class(carb_fac$carb) # factor
levels(carb_fac$carb) # has levels
head(carb_fac$carb, 3)
lm(mpg ~ carb, data = carb_fac) # factor
(adj_r2_fac <- summary(lm(mpg ~ carb, data = carb_fac))$adj.r.squared)
AIC(lm(mpg ~ carb, data = carb_fac)) # compare to R2, AIC for carb_to_int

# ??back?? to integer? Not quite. Compare carb_to_int to carb_orig_int
carb_to_int <- carb_fac # copy carb_fac to carb_to_int
carb_to_int <- factor_to_lab_int(carb_to_int, carb) # alias int2f() also works
class(carb_to_int$carb) # Is an integer
levels(carb_to_int$carb) # NOT a factor
mean(carb_to_int$carb) # NOT the same as carb_orig_int
lm(mpg ~ carb, data = carb_to_int) # NOT the same as carb_orig_int
(adj_r2_fac <- summary(lm(mpg ~ carb, data = carb_to_int))$adj.r.squared)
AIC(lm(mpg ~ carb, data = carb_to_int)) # NOT the same as carb_orig_int

[Package labelr version 0.1.5 Index]