# Conversion between Factor and Dummies in R

[This article was first published on

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

**Yet Another Blog in Statistical Computing » S+/R**, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

data(iris) str(iris) # OUTPUT: # 'data.frame': 150 obs. of 5 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... ### CONVERT THE FACTOR TO DUMMIES ### library(caret) dummies <- predict(dummyVars(~ Species, data = iris), newdata = iris) head(dummies, n = 3) # OUTPUT: # Species.setosa Species.versicolor Species.virginica # 1 1 0 0 # 2 1 0 0 # 3 1 0 0 ### CONVERT DUMMIES TO THE FACTOR ### header <- unlist(strsplit(colnames(dummies), '[.]'))[2 * (1:ncol(dummies))] species <- factor(dummies %*% 1:ncol(dummies), labels = header) str(species) # OUTPUT: # Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... ### COMPARE THE ORIGINAL AND THE CALCULATED FACTORS ### library(compare) all.equal(species, iris$Species) # OUTPUT: # [1] TRUE

To

**leave a comment**for the author, please follow the link and comment on their blog:**Yet Another Blog in Statistical Computing » S+/R**.R-bloggers.com offers

**daily e-mail updates**about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.