dummyVars函数:dummyVars creates a full set of dummy variables (i.e. less than full rank parameterization----建立一套完整的虚拟变量

先举一个简单的例子:

survey<-data.frame(service=c("very unhappy","unhappy","neutral","happy","very happy"))
survey
## service
## 1 very unhappy
## 2 unhappy
## 3 neutral
## 4 happy
## 5 very happy

# 我们可以直接增加一列rank,用数字代表不同情感

survey<-data.frame(service=c("very unhappy","unhappy","neutral","happy","very happy"),rank=c(1,2,3,4,5))
survey
## service rank
## 1 very unhappy 1
## 2 unhappy 2
## 3 neutral 3
## 4 happy 4
## 5 very happy 5

显然,对于单个变量进行如上处理并不困难,但是如果面对多个因子型变量都需要进行虚拟变量处理时,将会花费大量的时间。

下面用caret包中的dummyVars函数对因子变量进行哑变量处理。

library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
customers<-data.frame(id=c(10,20,30,40,50),gender=c("male","female","female","male","female"),
mood=c("happy","sad","happy","sad","happy"),outcome=c(1,1,0,0,0))
customers
## id gender mood outcome
## 1 10 male happy 1
## 2 20 female sad 1
## 3 30 female happy 0
## 4 40 male sad 0
## 5 50 female happy 0

# 利用dummyVars函数对customers数据进行哑变量处理

dmy<-dummyVars(~.,data=customers)

# 对自身变量进行预测,并转换成data.frame格式

trsf<-data.frame(predict(dmy,newdata=customers))
trsf
## id gender.female gender.male mood.happy mood.sad outcome
## 1 10 0 1 1 0 1
## 2 20 1 0 0 1 1
## 3 30 1 0 1 0 0
## 4 40 0 1 0 1 0
## 5 50 1 0 1 0 0

从结果看,outcome并没有进行哑变量处理。

我们查看customers的数据类型

str(customers)
## 'data.frame': 5 obs. of 4 variables:
## $ id : num 10 20 30 40 50
## $ gender : Factor w/ 2 levels "female","male": 2 1 1 2 1
## $ mood : Factor w/ 2 levels "happy","sad": 1 2 1 2 1
## $ outcome: num 1 1 0 0 0

可见,outcome的默认类型是numeric,现在这不是我们想要的。接下来将变量outcome转换成factor类型。

customers$outcome<-as.factor(customers$outcome)
str(customers)
## 'data.frame': 5 obs. of 4 variables:
## $ id : num 10 20 30 40 50
## $ gender : Factor w/ 2 levels "female","male": 2 1 1 2 1
## $ mood : Factor w/ 2 levels "happy","sad": 1 2 1 2 1
## $ outcome: Factor w/ 2 levels "0","1": 2 2 1 1 1

customers中的变量outcome类型转换后,我们再次用dmy对该数据进行预测,并查看最终结果。

trsf<-data.frame(predict(dmy,newdata=customers))
trsf
## id gender.female gender.male mood.happy mood.sad outcome0 outcome1
## 1 10 0 1 1 0 0 1
## 2 20 1 0 0 1 0 1
## 3 30 1 0 1 0 1 0
## 4 40 0 1 0 1 1 0
## 5 50 1 0 1 0 1 0

可见,outcome也已经进行了虚拟变量处理。

当然,也可以针对数据中的某一个变量进行虚拟变量(哑变量)处理。如我们需要对customers数据中的变量gender进行哑变量处理,可以执行以下操作:

dmy<-dummyVars(~gender,data=customers)
trfs<-data.frame(predict(dmy,newdata=customers))
trfs
## gender.female gender.male
## 1 0 1
## 2 1 0
## 3 1 0
## 4 0 1
## 5 1 0

对于两分类的因子变量,我们在进行虚拟变量处理后可能不需要出现代表相同意思的两列(例如:gender.female和gender.male)。这时候我们可以利用dummyVars函数中的fullRank参数,将此参数设置为TRUE。

dmy<-dummyVars(~.,data=customers,fullRank=T)
trfs<-data.frame(predict(dmy,newdata=customers))
trfs
## id gender.male mood.sad outcome.1
## 1 10 1 0 1
## 2 20 0 1 1
## 3 30 0 0 0
## 4 40 1 1 0
## 5 50 0 0 0

R语言:利用caret包中的dummyVars函数进行虚拟变量处理的更多相关文章

  1. R语言:recommenderlab包的总结与应用案例

    R语言:recommenderlab包的总结与应用案例   1. 推荐系统:recommenderlab包整体思路 recommenderlab包提供了一个可以用评分数据和0-1数据来发展和测试推荐算 ...

  2. R语言︱H2o深度学习的一些R语言实践——H2o包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言H2o包的几个应用案例 笔者寄语:受启发 ...

  3. 用R语言提取数据框中日期对应年份(列表转矩阵)

    用R语言提取数据框中日期对应年份(列表转矩阵) 在数据处理中常会遇到要对数据框中的时间做聚类处理,如从"%m/%d/%Y"中提取年份. 对应操作为:拆分成列表——列表转矩阵——利用 ...

  4. R语言利用ROCR评测模型的预测能力

    R语言利用ROCR评测模型的预测能力 说明 受试者工作特征曲线(ROC),这是一种常用的二元分类系统性能展示图形,在曲线上分别标注了不同切点的真正率与假正率.我们通常会基于ROC曲线计算处于曲线下方的 ...

  5. R语言中文分词包jiebaR

    R语言中文分词包jiebaR R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据 ...

  6. 使用R语言的RTCGA包获取TCGA数据--转载

    转载生信技能树 https://mp.weixin.qq.com/s/JB_329LCWqo5dY6MLawfEA TCGA数据源 - R包RTCGA的简单介绍 - 首先安装及加载包 - 指定任意基因 ...

  7. R语言 文本挖掘 tm包 使用

    #清除内存空间 rm(list=ls()) #导入tm包 library(tm) library(SnowballC) #查看tm包的文档 #vignette("tm") ##1. ...

  8. R语言使用 multicore 包进行并行计算

    R语言是单线程的,如果数据量比较大的情况下最好用并行计算来处理数据,这样会获得运行速度倍数的提升.这里介绍一个基于Unix系统的并行程序包:multicore. 我们用三种不同的方式来进行一个简单的数 ...

  9. 用R语言的quantreg包进行分位数回归

    什么是分位数回归 分位数回归(Quantile Regression)是计量经济学的研究前沿方向之一,它利用解释变量的多个分位数(例如四分位.十分位.百分位等)来得到被解释变量的条件分布的相应的分位数 ...

随机推荐

  1. 2017.3.12 H5学习的第一周

    本周我开始了H5的学习,在这一周里我们从html的基本标签开始一直讲到了才算css的用法,接下来我将记录下来本周我学到的H5的内容. 首先是声明文档,声明文档类型是HTML5文件,它在HTML文档必不 ...

  2. BZOJ1857 传送带 (三分法求单峰函数极值)

    第一次发BZOJ的题解,先从水题开始吧,好不容易找到一道水题,那就从这题开始吧. 1.题设部分{ 题目描述: 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线 ...

  3. Java基础学习

    1,基本类型和引用类型 基本类型就是一个盒子,数据本身就保存在盒子里面,引用类型的盒子里放的是数据的五:地址,通过这个地址来找到数据. 基本数据类型和堆中对象的引用保存在栈中,引用类型保存在堆中. 2 ...

  4. DOM 待编辑

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 单片机下载芯片max232,ch340,pl2303,hl340与下载接线

    开发板上的下载口位置一般都有很多 340,232等芯片,这些芯片都是干嘛用的呢? 普及:TTL电平    : 二进制电平,+5V等价于逻辑"1",0V等价于逻辑"0&qu ...

  6. 使用Docker

    1. 使用镜像 1.1 在Docker Hub上查找镜像 我们查找一下之前博客里面,推送到Docker Hub里面的bage88/docker-demo,能看到有2个仓库,第一个就是我们上次上传的镜像 ...

  7. 仿淘宝左侧菜单导航栏纯Html + css 写的

    这俩天闲来没事淘宝逛了一圈看到淘宝的左侧导航菜单做的是真心的棒啊,一时兴起,查了点资料抓了几个图片仿淘宝写了个css,时间紧写的不太好,大神勿喷,给小白做个参考 废话不多说先来个效果图 接下来直接上代 ...

  8. 金山助手流氓软件-被进程sjk_daemon.exe坑死

    修改完Android工程代码,进入调试阶段时DDMS中报错:The connection to adb is down, and a severe error has occured. 由于之前也碰到 ...

  9. 腾讯QQAndroid API调用实例(QQ分享无需登录)

    腾讯QQAndroid API调用实例(QQ分享无需登录)   主要分为两个步骤: 配置Androidmanifest.xml 修改activity里边代码 具体修改如下:   1.Activity代 ...

  10. SQL SERVER 的前世今生--各版本功能对比

    背景 今天举办的 Data Amp 大会上,微软向开发者们强调了 数据如何影响他们的应用和服务 ,顺道还宣布了几个小新闻.这个免费的线上研讨会不仅展示了未来的机器学习远景,还发布了 SQL Serve ...