我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在R语言中对数据进行重新编码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在R语言中对数据进行重新编码

怎么在R语言中对数据进行重新编码?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

(一)使用逻辑判断式

(1)现假设我们需要将下面的连续型变量x按照10与20分成三个组,新的分组名称为1、2、3:

怎么在R语言中对数据进行重新编码

> x2=1*(x<=10)+2*(x>10&x<=20)+3*(x>20)> x2 [1] 1 2 3 2 3 3 3 3 1 3 3 2 1 2 3 3 3 2 3 3

将上述变量的数字编码改为字符编码

> labels=c("A","B","C")> x3=labels[x2]> x3 [1] "A" "B" "C" "B" "C" "C" "C" "C" "A" "C" "C" "B" "A" "B" "C" "C" "C" "B" "C" "C"

假设如下将以下范例月收入数据分成“低收入”,“中等收入”,“高收入”三个组:

> income<-c(130065,82961,133076,123028,108945,173466,17477)> income[1] 130065  82961 133076 123028 108945 173466  17477> newcodes=c("低收入","中等收入","高收入")Error: unexpected input in "newcodes=c("低收入"?> newcodes=c("低收入","中等收入","高收入")> index=1*(income<20000)+2*(income>=20000&income<=60000)+3*(income>60000)> income=newcodes[index]> income[1] "高收入" "高收入" "高收入" "高收入" "高收入" "高收入" "低收入"

(2)使用ifelse函数

基本语法:ifelse(逻辑判断式,TRUE-表达式,FALSE-表达式)

编码成两个分组:

> x [1]  4 12 50 18 50 22 23 46  8 46 36 18 10 14 35 48 23 17 29 30> (x2=ifelse(x<=30,1,2)) [1] 1 1 2 1 2 1 1 2 1 2 2 1 1 1 2 2 1 1 1 1> (x3=ifelse(x<=30,"A","B")) [1] "A" "A" "B" "A" "B" "A" "A" "B" "A" "B" "B" "A" "A" "A" "B" "B" "A" "A" "A" "A"

搭配%int%运算符,将"A",“C"重编码为"Group1”,“B”,“D"重编码为"Group2”:

> y [1] "B" "A" "C" "C" "B" "A" "D" "B" "C" "D" > (y2=ifelse(y %in% c("A","C"),"Group1","Group2")) [1] "Group2" "Group1" "Group1" "Group1" "Group2" "Group1" "Group2" "Group2" "Group1" "Group2"

当编码成三个或者三个以上的组时需要多次使用ifelse 函数:

将x按照10与20两个分割点分成1、2、3三组:

> x [1]  4 12 50 18 50 22 23 46  8 46 36 18 10 14 35 48 23 17 29 30> (x2=ifelse(x<=10,1,ifelse(x<20,2,3))) [1] 1 2 3 2 3 3 3 3 1 3 3 2 1 2 3 3 3 2 3 3

将“A”“E”编码为1,"C"编码为2,“B”“D”编码为3:

> y [1] "B" "A" "C" "C" "B" "A" "D" "B" "C" "D"> y2=ifelse(y%in%c("A","E"),1,ifelse(y=="C",2,3))> y2 [1] 3 1 2 2 3 1 3 3 2 3

(二)使用cut 函数

cut函数可以根据我们设置的分割点(breaks)将数据重编码,将一个数值向量变量转换为分组形态的factors变量。

基本语法:

cut(x,breaks,labels,include.lowest=F,right=T)

其中

x为数值向量

breaks为分割点信息。若breaks为向量,则根据向量中的数字进行分割。若breaks为大于1正整数k,则将

x分成均等的k组。

labels为分割后各组的名称,若为null,则输出数字向量,否则输出factor变量。

include.lowest=FALSE表示分割时不含各区间端点的最小值。

right=T表示各区间为左端open,右端closed的区间

使用cut函数将x向量依照0、10、20,max(x)分成3组

> x [1]  4 12 50 18 50 22 23 46  8 46 36 18 10 14 35 48 23 17 29 30> x2=cut(x,breaks = c(0,10,20,max(x)),labels = c(1,2,3))> x2 [1] 1 2 3 2 3 3 3 3 1 3 3 2 1 2 3 3 3 2 3 3Levels: 1 2 3> as.vector(x2) [1] "1" "2" "3" "2" "3" "3" "3" "3" "1" "3" "3" "2" "1" "2" "3" "3" "3" "2" "3" "3"

若没有给定labels参数,cut函数自动按照分割点生成分组名称:

x3=cut(x,breaks = c(0,10,20,max(x)))> x3 [1] (0,10]  (10,20] (20,50] (10,20] (20,50] (20,50] (20,50] (20,50] (0,10]  (20,50] (20,50] (10,20] (0,10] [14] (10,20] (20,50] (20,50] (20,50] (10,20] (20,50] (20,50]Levels: (0,10] (10,20] (20,50]

现在我们模拟产生10个N(60,10)的随机成绩,并且使用cut函数的breaks选项将其分成5个组:

> score=round(rnorm(10,60,10))> score [1] 39 65 60 69 58 69 70 62 61 75> score.cut=cut(score,breaks=5)> score.cut [1] (39,46.2]   (60.6,67.8] (53.4,60.6] (67.8,75]   (53.4,60.6] (67.8,75]   (67.8,75]   (60.6,67.8] [9] (60.6,67.8] (67.8,75]  Levels: (39,46.2] (46.2,53.4] (53.4,60.6] (60.6,67.8] (67.8,75]

由以上结果可知,cut()函数默认输出一个factor变量,并且自动将五个分组命名为“ (39,46.2]”…“ (67.8,75]”。如果cut()的选项labels=FALSE,则输出的结果是数字编码的一半向量变量:

> score.cut=cut(score,breaks=5,labels = F)> score.cut [1] 1 4 3 5 3 5 5 4 4 5> score.cut=as.factor(score.cut)> score.cut [1] 1 4 3 5 3 5 5 4 4 5Levels: 1 3 4 5

(三)使用car程序包中的recode函数

car程序包的recode函数可以将数值或者字符向量、factor变量重新编码。

基本语法:recode(x,recodes,as.factor.result,levels)

其中:

x为数值向量,字符向量或者factor 变量。

recode为设定重新编码规则的字符串。

as.factor.result为是否输出factor变量。若是则为TRUE,不是为FALSE。

levels为排序向量。指定新的编码分组的顺序(默认是按照分组名称排序)。

recodes参数编码规则的写法

recodes参数的值是一个字符串,字符串里面是以分号分隔的编码规则:

recodes=“规则1;规则2…”

每一个编码规则的格式为旧码列表=新码,“旧码列表”部分可用lo代表旧码的最小值(low)、hi代表旧码的最大值(high)撰写规则如下:

(1)旧码=新码 旧码只有单一数值。例如:“0=NA”表示将0改为NA。

(2)旧码向量=新码 多个旧码改为一个新码。例如:“c(7,8,9)=‘high'”,将7,8,9改为high。

(3)start:end=新码 有序数字改码。例如:“lo:19=‘C'”。

(4)else=新码 所有其他情况。例如:“else=NA”。

程序范例:

> library(carData)> library(car)> x[1] 1 2 3 1 2 3 1 2 3> recode(x,"c(1,2)='A';else='B'")[1] "A" "A" "B" "A" "A" "B" "A" "A" "B"

将成绩0~40分之间的分数编码为1,41-60分之间为2,61-80分为3,81以上为4,其他情况为NA

> score [1] 75 70 66 65 55 69 75 69 82 83> recode(score,"lo:40=1;41:60=2;61:80=3;81:hi=4;else=NA") [1] 3 3 3 3 2 3 3 3 4 4

上例改用‘A'‘B'‘C''‘D'

> recode(score,"lo:40='A';41:60='B';61:80='C';81:hi='D';else=NA") [1] "C" "C" "C" "C" "B" "C" "C" "C" "D" "D"

补充:R语言字符串处理时的编码的一些问题问题(Windows环境)

R在windows中文系统时默认使用GB编码字符,而许多函数是只支持UTF-8的,例如

怎么在R语言中对数据进行重新编码

不作任何处理读入数据时,数据会以系统默认编码读入,tolower()函数工作失败

如果有干预的读入数据,即指定字符串的编码,则不会出错

怎么在R语言中对数据进行重新编码

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在R语言中对数据进行重新编码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在R语言中对数据进行重新编码

怎么在R语言中对数据进行重新编码?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。(一)使用逻辑判断式(1)现假设我们需要将下面的连续型变量x按照10与20分成三个
2023-06-14

怎么在R语言中对变量进行重编码和重命名

这篇文章给大家介绍怎么在R语言中对变量进行重编码和重命名,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、变量重编码重编码涉及根据同一个变量和/或其他变量的现有值创建新值的过程,如将符合某个条件的值重新赋值等,这里主要
2023-06-14

怎么在R语言中使用dplyr包对数据进行处理

这期内容当中小编将会给大家带来有关怎么在R语言中使用dplyr包对数据进行处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、数据筛选函数:#可使用filter()函数筛选/查找特定条件的行或者样本#f
2023-06-08

R语言中怎么进行数据筛选

在R语言中,可以使用subset()函数来进行数据筛选。subset()函数的参数包括数据框(data frame)对象和逻辑条件,通过逻辑条件对数据框进行筛选。例如,以下是一个简单的示例:# 创建一个数据框data <- data.f
R语言中怎么进行数据筛选
2024-03-02

r语言中怎么进行数据清洗

在R语言中进行数据清洗,可以按照以下步骤进行:缺失值处理:使用函数is.na()判断缺失值,使用函数na.omit()删除包含缺失值的行,使用函数complete.cases()删除包含缺失值的行。重复值处理:使用函数duplicated(
r语言中怎么进行数据清洗
2024-03-06

r语言中怎么进行数据处理

在R语言中进行数据处理时,常见的操作包括数据清洗、数据转换、数据筛选、数据聚合、数据可视化等。以下是一些常用的数据处理操作:数据清洗:删除缺失值、处理异常值、处理重复值等。# 删除缺失值na.omit(data)# 处理异常值data
r语言中怎么进行数据处理
2024-03-02

怎么在R语言中对字符串进行拼接

这篇文章将为大家详细讲解有关怎么在R语言中对字符串进行拼接,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在R语言中 paste 是一个很有用的字符串处理函数,可以连接不同类型的变量及常量。函
2023-06-14

r语言中怎么进行数据类型转换

在R语言中,可以使用以下函数来进行数据类型转换:使用as.numeric()函数将数据转换为数值型:x <- "10"x <- as.numeric(x)使用as.integer()函数将数据转换为整型:x <- 10.5x <- as
r语言中怎么进行数据类型转换
2024-03-02

R语言怎么对数组进行切片操作

在R语言中,可以使用方括号[]来对数组进行切片操作。以下是一些示例:对向量进行切片操作:# 创建一个向量vec <- c(1, 2, 3, 4, 5)# 切片操作,提取第2到第4个元素sub_vec <- vec[2:4]print(
R语言怎么对数组进行切片操作
2024-03-06

R语言怎么对数组进行转置操作

在R语言中,可以使用transpose()函数对数组进行转置操作。下面是一个简单的示例:# 创建一个矩阵mat <- matrix(1:6, nrow = 2)# 输出原始矩阵print(mat)# 对矩阵进行转置操作transpo
R语言怎么对数组进行转置操作
2024-03-06

r语言中怎么使用dplyr包进行数据筛选

使用dplyr包进行数据筛选的基本步骤如下:安装并加载dplyr包:首先需要安装dplyr包,并通过library(dplyr)命令加载包。install.packages("dplyr")library(dplyr)使用filter()
r语言中怎么使用dplyr包进行数据筛选
2024-03-06

r语言中怎么进行数据采样和抽样操作

在R语言中,可以使用以下函数来进行数据采样和抽样操作:从数据集中随机抽取样本:sample(data, size, replace = FALSE)其中,data为要抽样的数据集,size为抽样的样本大小,replace为是否允许重复抽样(
r语言中怎么进行数据采样和抽样操作
2024-03-06

怎么在R语言中导入CSV数据

这期内容当中小编将会给大家带来有关怎么在R语言中导入CSV数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。第一、查看读取路径:getwd()```getwd() #获取文件存储位置[1] "E:/R/m
2023-06-13

怎么在R语言中使用density plot进行绘图

这期内容当中小编将会给大家带来有关怎么在R语言中使用density plot进行绘图,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Step1. 绘图数据的准备首先还是要把你想要绘图的数据调整成R语言可以识
2023-06-08

R语言中怎么读取前n行数据

小编给大家分享一下R语言中怎么读取前n行数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的
2023-06-14

怎么在R语言中使用筛选数据

这期内容当中小编将会给大家带来有关怎么在R语言中使用筛选数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的一个自由、免费、源代码开放
2023-06-14

R语言怎么在数组中添加新的元素

要在R语言中数组中添加新的元素,可以使用c()函数或append()函数来实现。以下是两种方法的示例:使用c()函数:# 创建一个包含元素的数组arr <- c(1, 2, 3, 4)# 添加新的元素到数组中arr <- c(arr
R语言怎么在数组中添加新的元素
2024-03-06

R语言中怎么进行空间数据的分析和可视化

在R语言中进行空间数据的分析和可视化通常使用到专门的空间数据处理包,比如sp、rgdal、raster、sf等。以下是一个简单的例子,展示如何使用sp包进行空间数据的分析和可视化:导入空间数据和相关包:library(sp)data(me
R语言中怎么进行空间数据的分析和可视化
2024-04-12

r语言中怎么进行数据科学项目开发和部署

在R语言中进行数据科学项目开发和部署通常需要遵循以下步骤:数据准备:首先需要准备好需要分析的数据集,可以使用R语言中的各种数据处理包(如dplyr、tidyr等)进行数据清洗、转换和探索性分析。模型开发:选择适当的数据分析方法和建模技术,使
r语言中怎么进行数据科学项目开发和部署
2024-03-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录