R语言变量重编码、重命名的操作

1、变量重编码

重编码涉及根据同一个变量和/或其他变量的现有值创建新值的过程,如将符合某个条件的值重新赋值等,这里主要介绍两种常见的方法:

#第一种方法
per <- data.frame(name = c("张三","李四","王五","赵六"),
                  age = c(23,45,34,1000))
per
per$age[per$age == 1000] <- NA #设置缺失值
per$age1[per$age < 30] = "young" #生成新变量
per$age1[per$age >= 30 & per$age<50] <- "middle age"
per
#第二种方法
per <- data.frame(name = c("张三","李四","王五","赵六"),
                  age = c(23,45,34,1000))
per <- within(per,{
   age1 <- NA
   age1[age < 30] <- "young"
   age1[age>=30 & age<50] <- "middle age"
})
per

2、变量的重命名

变量已经存在,但是如果对变量名称不满意,可以对变量重新命名,这里提供以下几种方法:

手动输入。应用fix()函数调出编辑框,手动输入即可。

使用names()函数。格式为:names(x) <- value。需要指定对第几个变量名进行修改。

使用plyr包中的rename()函数。格式为rename(x, replace, warn_missing = TRUE, warn_duplicated = TRUE),需要指定对哪个变量名进行修改。

per <- data.frame(name = c("张三","李四","王五","赵六"),
                  age = c(23,45,34,1000))
per
#第一种方法:手动输入
fix(per) #调出输入框,手动输入
#第二种方法,names()函数
per <- data.frame(name = c("张三","李四","王五","赵六"),
                  age = c(23,45,34,1000))
names(per)[2] <- "年龄"  #指定第个变量重命名
per
#第三种方法
per <- data.frame(name = c("张三","李四","王五","赵六"),
                  age = c(23,45,34,1000))
library(plyr)
per <- rename(per,c(age="年龄")) #直接对变量名进行修改
per

补充:R语言变量的处理(创建新变量 变量重新赋值)

创建新变量:

方法一:

#在mydata数据库中创建新变量sum,sum是mydata数据库中x1和x2之和
mydata$sum <- mydata$x1 + mydata$x2
#在mydata数据库中创建新变量mean,sum是mydata数据库中x1和x2平均
mydata$mean <- (mydata$x1 + mydata$x2)/2

eg:

> newwomen=women
> newwomen$bmi=women$weight/women$height^2;
> newwomen
   height weight        bmi
1      58    115 0.03418549
2      59    117 0.03361103
3      60    120 0.03333333
4      61    123 0.03305563
5      62    126 0.03277836
6      63    129 0.03250189
7      64    132 0.03222656
8      65    135 0.03195266
9      66    139 0.03191001
10     67    142 0.03163288
11     68    146 0.03157439
12     69    150 0.03150599
13     70    154 0.03142857
14     71    159 0.03154136
15     72    164 0.03163580
> 

方法二:

attach(mydata) #附上数据mydata
mydata$sum <- x1 + x2 #在mydata数据库中创建新变量sum
mydata$mean <- (x1 + x2)/2 #新变量mean
detach(mydata) #每次attach数据之后,应该detach,解除之前的数据库粘附

这个地方我们看见x1和x2变量前面不需要再使用mydata$,那是因为我们之前已经附上mydata数据库(attach),这个时候,R已经知道会利用附上的数据中的x1和x2变量直接计算。但是创建的新变量sum必须使用$在mydata数据库之下,不然R就会计算出名字为sum,但是是个list性质的单独数据库。

方法三:

mydata <- transform( mydata, sum = x1 + x2,mean = (x1 + x2)/2)
#通过一行命令创建多个新变量。
 newwomen=transform(women,bmi=weight/height^2)
> newwomen
   height weight        bmi
1      58    115 0.03418549
2      59    117 0.03361103
3      60    120 0.03333333
4      61    123 0.03305563
5      62    126 0.03277836
6      63    129 0.03250189
7      64    132 0.03222656
8      65    135 0.03195266
9      66    139 0.03191001
10     67    142 0.03163288
11     68    146 0.03157439
12     69    150 0.03150599
13     70    154 0.03142857
14     71    159 0.03154136
15     72    164 0.03163580

变量重新赋值

方法一:

mydata$agecat <- ifelse(mydata$age > 70,c("older"), c("younger")) # 创建年龄组别(2组)

该命令利用ifelse函数,有点类似于其他语言中的if….else。 该命令左边告诉R我们需要在mydata数据库里面创建新变量agecat(年龄组),该变量当age>70时,年龄组变量赋值为older,其他情况下(age<=70),年龄组变量赋值为younger。关于更多ifelse()信息和案例,可通过help(ifelse)查看。

方法二:

attach(mydata)
mydata$agecat[age > 75] <- "Elder"
mydata$agecat[age > 45 & age <= 75] <- "Middle Aged"
mydata$agecat[age <= 45] <- "Young"
detach(mydata)
#创建变量agecat,并按照年龄大小直接赋值.

重命名

方法一

fix(mydata) #直接重命名,关闭时保存

方法二

library(reshape)
mydata <- rename(mydata, c(oldname="newname"))
#利用reshape包里面的rename函数直接重命名。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言编码问题的解决

    今天博客主要是解决一个学R语言里面最最痛苦的问题(嗯,python2.x里面也有),就是中文乱码问题: 一般用R语言的同学,多半遇见过以下这个问题: 反正虾神我每次遇见这个问题,立刻就是: 实际上这个问题写代码的人一般都能遇见,不同字符编码的问题,如果是从文件里面读的还好说,可以带这个字符编码集一起读,但是如果这个数据是来自于数据库的,如果经验的话,那就真得各种凉拌了. 下面我简单把我今天通过R语言从Postgresql数据库中处理中文问题的整个流程说说,如果哪位同学也遇上了,可以参考我的整个解

  • R语言-实现按日期分组求皮尔森相关系数矩阵

    R语言按日期分组求相关系数 前几天得到了3700+支股票一周内的波动率,想要计算每周各个股票之间的相关系数并将其可视化.最终结果保存在制定文件夹中. 部分数据如下: 先读取数据 data<-read.csv("D:/data/stock_day_close_price_week_series.csv", header = TRUE,blank.lines.skip = TRUE) 利用mice包处理缺失值: library(lattice) library(MASS) libra

  • R语言操作X轴日期实例讲解

    R语言操作X轴日期: 需要用到程序包library(lubridate):程序包是在R的安装包C:\R-3.4.4\bin\x64\RGui.exe里根据命令安装的 将日期改为xxxx/xx/01: firstDay='2020/02/12' : 可用 day(firstDay)<-01; //此时firstDay的数据为:'2020/02/01':day()是获取日,month()获取月份,year()获取年份 都需要'lubridate'包 可以通过write.table(firstDay,

  • R语言变量级别的数据处理操作

    变量级别的数据处理无非是对变量的增删改查. 增 即增加新的变量 R语言中,增加一个新变量形式语句如下: 变量名 <- 表达式 表达式可以包含多种运算符和函数.常见运算符包括: 运算符 描述 + 加 - 减 * 乘 / 除 ^或** 求幂 x%%y 求余(x mod y).5%%2的结果为1. x%/%y 整数除法.5%/%2的结果为2. 示例: #创建一个数据框 mydata <- data.frame(x1 = c(2,2,6,4), + x2 = c(3,4,2,8)) mydata x1

  • R语言实现将分类变量转换为哑变量(dummy vairable)

    生成测试数据 a1 <- c("f","f","b","b","c,"c") 利用nnet包中的函数class.ind > class.ind(a1) b c f [1,] 0 0 1 [2,] 0 0 1 [3,] 1 0 0 [4,] 1 0 0 [5,] 0 1 0 [6,] 0 1 0 class.ind代码 class.ind <- function(cl) { n &

  • R语言差异检验:非参数检验操作

    非参数检验是在总体方差未知或知道甚少的情况下,利用样本数据对总体分布形态进行推断的方法.它利用数据的大小间的次序关系(秩Rank),而不是具体数值信息,得出推断结论. 它是参数检验所需要的某些条件不满足时所使用的方法. 和参数检验相比,非参数检验的优势如下: 稳健性.对总体分布的条件要求放宽 对数据类型要求不严格,适用有序分类变量 适用范围广 劣势: 没有利用实际数值,损失了部分信息,检验的有效性较差. 非参数性检验的方法非常多,基于方法的检验功效性角度,本文只涉及 双独立样本:Mann-Whi

  • R语言变量重编码、重命名的操作

    1.变量重编码 重编码涉及根据同一个变量和/或其他变量的现有值创建新值的过程,如将符合某个条件的值重新赋值等,这里主要介绍两种常见的方法: #第一种方法 per <- data.frame(name = c("张三","李四","王五","赵六"), age = c(23,45,34,1000)) per per$age[per$age == 1000] <- NA #设置缺失值 per$age1[per$age

  • R语言变量赋值深入讲解

    变量可以使用向左,向右且等于操作符来分配值.可以使用 print() 或 cat() 函数打印变量的值.cat() 函数将多个项目并成连续并打印输出. # Assignment using equal operator. var.1 = c(0,1,2,3) # Assignment using leftward operator. var.2 <- c("learn","R") # Assignment using rightward operator. c

  • R语言开发之CSV文件的读写操作实现

    在R中,我们可以从存储在R环境外部的文件读取数据,还可以将数据写入由操作系统存储和访问的文件.这个csv文件应该存在于当前工作目录中,以方便R可以读取它, 当然,也可以设置自己的目录,并从那里读取文件. 我们可以使用getwd()函数来检查R工作区指向哪个目录,并且使用setwd()函数设置新的工作目录,如下: 输出结果如下: csv文件是一个文本文件,其中列中的值用逗号分隔,我们可以将以下数据保存入txt文件中,并且修改后缀名称为csv: id,name,salary,start_date,d

  • R语言开发之输出折线图的操作

    线形图是通过在多个点之间绘制线段来连接一系列点所形成的图形,这些点按其坐标(通常是x坐标)的值排序,并且它通常用于识别数据趋势. 在R中的通过使用plot()函数来创建线形图,语法如下: plot(v,type,col,xlab,ylab) 参数描述如下: v - 是包含数值的向量. type - 取值"p"表示仅绘制点,"l"表示仅绘制线条,"o"表示仅绘制点和线. xlab - 是x轴的标签. ylab - 是y轴的标签. main - 是图

  • R语言wilcoxon秩和检验及wilcoxon符号秩检验的操作

    说明 wilcoxon秩和及wilcoxon符号秩检验是对原假设的非参数检验,在不需要假设两个样本空间都为正态分布的情况下,测试它们的分布是否完全相同. 操作 #利用mtcars数据 library(stats) data("mtcars") boxplot(mtcars$mpg~mtcars$am,ylab='mpg',names = c('automatic','manual)) #执行wilcoxon秩和检验验证自动档手动档数据分布是否一致 wilcox.test(mpg~am,

  • R语言ggplot2x轴顺序设置自定义颜色的操作

    先声明一下所用的数据集 第一个图如下 这个图主要在于x轴的顺序设置上,如果按不做任何处理的话>3那个就会在2之前,解决方法是b[,1]<-factor(b[,1],levels=c('2','3',">3")),这句代码可以重新设置因子的级别 完整代码如下: a[,1]<-factor(a[,1],levels=c('2','3',">3")) ggplot(a,aes(x=a[,1],y=a[,2]))+geom_bar(stat=&

  • 在R语言中实现Logistic逻辑回归的操作

    逻辑回归是拟合回归曲线的方法,当y是分类变量时,y = f(x).典型的使用这种模式被预测Ÿ给定一组预测的X.预测因子可以是连续的,分类的或两者的混合. R中的逻辑回归实现 R可以很容易地拟合逻辑回归模型.要调用的函数是glm(),拟合过程与线性回归中使用的过程没有太大差别.在这篇文章中,我将拟合一个二元逻辑回归模型并解释每一步. 数据集 我们将研究泰坦尼克号数据集.这个数据集有不同版本可以在线免费获得,但我建议使用Kaggle提供的数据集. 目标是预测生存(如果乘客幸存,则为1,否则为0)基于

  • R语言关于变量的知识点总结

    变量为我们提供了我们的程序可以操作的命名存储. R语言中的变量可以存储原子向量,原子向量组或许多Robject的组合. 有效的变量名称由字母,数字和点或下划线字符组成. 变量名以字母或不以数字后跟的点开头. 变量名 合法性 原因 var_name2. 有效 有字母,数字,点和下划线 VAR_NAME% 无效 有字符'%'.只有点(.)和下划线允许的. 2var_name 无效 以数字开头 .var_name, var.name 有效 可以用一个点(.),但启动点(.),不应该后跟一个数字. .2

  • R语言将变量分组的3种方法实例(含cut函数说明)

    目录 前言 方法一:直接对分组变量进行赋值 方法二:使用within函数对变量进行分组 方法三:采用cut函数 总结 前言 在数据处理的过程中,我们有时候需要将连续的数值数据转换为类别数据,比如将收入分成高.中和低三组,将学生成绩分为优.良.中.及格和不及格五组. 本来将基于R语言,采用三种方法来实现:第一种是对变量直接进行重新赋值,第二种是使用within函数对语句进行组织,第三种是cut函数. 首先我们定义一个数据框,这个数据框包括学生姓名和数学成绩两个变量. #定义数据框 mathScor

随机推荐