R/echoice2.R
ec_undummy.Rd
Given a set of dummy variables, this function converts them into a single categorical variable. The categorical variable is created by determining which variables are active (i.e. have a value of 1) for each observation and assigning a category based on the set of active variables. If necessary, a reference level can be specified to ensure that all possible categories are represented. Often, all brands of a brand attribute are added as brand intercepts, while other categorical attributes are coded with respect to a reference level.
ec_undummy(data_in, set_members, attribute_name, ref_level = NULL)
a data frame containing the dummy variables
a character vector of the names of the dummy variables
a character string representing the name of the new categorical variable
a character string representing the name of the reference level. If specified, a new dummy variable will be created for this level, and it will be used as the reference category for the categorical variable. Defaults to NULL.
a data frame with the same columns as data_in
, except for the
dummy variables in set_members
, which are replaced with the new
categorical variable attribute_name
minidata=structure(list(id = c("1", "1", "1", "1", "2", "2", "2", "2"),
task = c(1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L),
alt = c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L),
brand1 = c(1, 0, 1, 0, 1, 0, 1, 0),
brand2 = c(0, 1, 0, 1, 0, 1, 0, 1),
price = c(1, 2, 1, 2, 1, 2, 1, 2),
x = c(1, 0, 0, 1, 1, 0, 1, 0)),
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -8L))
minidata %>% ec_undummy(c('brand1','brand2'),"brand")
#> # A tibble: 8 × 6
#> id task alt brand price x
#> <chr> <int> <int> <fct> <dbl> <dbl>
#> 1 1 1 1 brand1 1 1
#> 2 1 1 2 brand2 2 0
#> 3 1 2 1 brand1 1 0
#> 4 1 2 2 brand2 2 1
#> 5 2 3 1 brand1 1 1
#> 6 2 3 2 brand2 2 0
#> 7 2 4 1 brand1 1 1
#> 8 2 4 2 brand2 2 0