R语言数据处理 之 创建新变量
初步的数据处理,通常要创建新的变量。其实,创建新变量可以:
- 避开未经处理的数据未有所需数据的难处;
- 变换一些已有数据,以更好的为下一步分析作准备;
而常创建的新变量有:
- 缺失值指针 (Missingness indicators) :指出在哪些地方有数据缺失
- 分段数值型数据 ("Cutting Up" quantitative variables):数值型变量对应一些特定值划分而成的因子变量,是数值型变量对应一些特定值划分而成的因子变量
- Applying transforms: 对有着特殊分布的数据进行变换
一、添加新变量
1.1了解相关的运算符:
可以利用创建表达式来构建新的变量,下面介绍一下R的运算符表达:
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
^ 或者** | 求幂 |
x%%y | 求余 |
x%/%y | 整数除法 |
而创建新变量除了常用的:
data$new_var<- data$x1+data$x4
还有运用transform()函数来构建:
> data<-transform(data,new1 = (x1+x2)/2,new2 = x1-x3)
两种方法,各有优点,但第二种方法更加适用于增加多变量的情况。
·seq()
拿到数据后,第一步是:创建数列(create sequences)。 通常你要做的就是告诉 seq() 数列的最小值和最大值。然后有3种方法可以确定要生成多少个值,一种就是用 by= 命令;另一种方法就是声明这个数列向量的长度length=;使用 seq(along = x)它就会生成一个和 x 一样长的向量,其中包含一串连续的序号,你可以用它们来进行遍历 或者获取数据集的子集
seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),
length.out = NULL, along.with = NULL, ...)
1.2添加一个变量来表述该数据中的子集是否存在某变量
%in%用于:创建某种变量,这个变量指示另一个变量出自哪一个子集:
#用大家比较熟悉的入门数据cars来演示一下:
> data(cars)
> head(cars)speed dist
1 4 2
2 4 10
3 7 4
4 7 22
5 8 16
6 9 10
添加一个新变量来描述车是不是快车(speed>=8)
> cars$fast<-cars$speed %in% c(8,9)
> head(cars$fast)
[1] FALSE FALSE FALSE FALSE TRUE TRUE
> head(cars)speed dist fast
1 4 2 FALSE
2 4 10 FALSE
3 7 4 FALSE
4 7 22 FALSE
5 8 16 TRUE
6 9 10 TRUE
> table(cars$fast)FALSE TRUE 48 2
1.3 利用逻辑算符
利用逻辑算符,可以返回T/F 来进行新变量的创建:
< | 小于 |
<= |
小于/等于 |
> | 大于 |
>= | 大于/等于 |
== | 严格等于 |
!= | 不等于 |
!x | 不是x |
x|y |
x或y |
isTRUE(x) | 测试x是否为True |
再具体通过演示代码来看一下,还是用比较熟悉的mtcars数据来演示:
> head(mtcars)mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
创建一个carbsize来描述分类carb的大小,如下所示:
> mtcars$carbsize[mtcars$carb<4] <-"small"
> mtcars$carbsize[mtcars$carb>=4] <-"big"
> head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb carbsize
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 big
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 big
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 small
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 small
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 small
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 small
1.4创建二进制变量(binary variables)
用ifelse(),同样用上面cars来做:
function (test, yes, no)
> cars$slow<-ifelse(cars$speed<=10,T,F)
> table(cars$slow)FALSE TRUE 41 9
> cars$slow<-ifelse(cars$speed<=10,1,0)
> table(cars$slow)0 1
41 9
最后 做一张如下的关系表。
> table(cars$slow,cars$speed<=10)FALSE TRUE0 41 01 0 9
这是一种过滤数据值的简单方法。
1.5数值型创建类别变量(categorical variables)
> cut function (x, ...) UseMethod("cut") <bytecode: 0x000000000d2a7e00> <environment:namespace:base> |
> cut2 function (x, cuts, m = 150, g, levels.mean = FALSE, digits, minmax = TRUE, oneval = TRUE, onlycuts = FALSE) |
二、因子变量(factor variables)
> factor
function (x = character(), levels, labels = levels, exclude = NA,
ordered = is.ordered(x), nmax = NA)
不止factor(),上述的cut2()也会产生不同分组的因子变量
三、用 mutate() 函数来构建一种新的变量
> library(plyr)
> mutate
function (.data, ...)
{
stopifnot(is.data.frame(.data) || is.list(.data) || is.environment(.data))
cols <- as.list(substitute(list(...))[-1])
cols <- cols[names(cols) != ""]
for (col in names(cols)) {
.data[[col]] <- eval(cols[[col]], .data, parent.frame())
}
.data
}
<environment: namespace:plyr>
四、其他常见的转换:整理其中一些如下
- abs(x) : absolute value
- sqrt(x) : square root
- ceiling(x) : ceiling(3.14159) to 4
- floor(x) : floor(3.14159)to 4
- round(x,digits=n) : round(3.14159,digits=2) to 3.14
- signif ((x,digits=n)) : signif(3.14159,digits=2) to 3.1
- cox(x), sin(x)......
- log(x)
- log2(x),.....
- exp(x)
R语言数据处理 之 创建新变量相关推荐
- R语言给数据集创建新变量
再数据分析的过程中往往需要先创建新变量再进行分析.根据经验,主要包括两方面. 1.独立创建变量,再利用新变量数据进行数据整理和分析,这样比较简单,代码如下: data$newvar<-data$ ...
- R语言创建新变量方法
R语言创建新变量方法 在数据分析中,可能需要对数据进行求和.求均值等处理,并且将处理后的数据重新保存到原来的数据框中,这里提供三种可供解决的方法: 数据框$变量名 <- 表达式.若原数据框中含有 ...
- R语言变量的处理(创建新变量 变量重新赋值
创建新变量: 方法一: #在mydata数据库中创建新变量sum,sum是mydata数据库中x1和x2之和 mydata$sum <- mydata$x1 + mydata$x2 #在myda ...
- R语言使用两个分类变量创建双向表(Two Way Table、两个分类变量的频率表)实战: 矩阵的双向表、dataframe的双向表、条形图和马赛克图来可视化频率表
R语言使用两个分类变量创建双向表(Two Way Table.两个分类变量的频率表)实战: 矩阵的双向表.dataframe的双向表.条形图和马赛克图来可视化频率表 目录
- 基础004:R语言数据处理和变换——dplyr
dplyr 背景简介 安装和数据准备 常用函数 变量筛选select 数据筛选filter 排序arrange 创建新变量mutate 本文"植物微生物组"公众号原创,ID: pl ...
- R语言数据处理——基础篇 data.frame基本操作
文章目录 R语言数据处理--基础篇 data.frame基本操作 data.frame的创建 数据访问.条件筛选与删除 数据访问 数据筛选 删除 使用`gather()`进行data.frame数据格 ...
- R语言为dataframe添加新的数据列(add new columns):使用R原生方法、data.table、dplyr等方案
R语言为dataframe添加新的数据列(add new columns):使用R原生方法.data.table.dplyr等方案 目录 R语言为dataframe
- R语言为dataframe添加新的数据列(横向拼接、Appending columns,Unioning columns):使用R原生方法、data.table、dplyr等方案
R语言为dataframe添加新的数据列(横向拼接.Appending columns,Unioning columns):使用R原生方法.data.table.dplyr等方案 目录 R语言为dat
- R语言gganimate包创建可视化gif动图、并使用anim_save函数保存可视化gif动图(gganimate export to gif)
R语言gganimate包创建可视化gif动图.并使用anim_save函数保存可视化gif动图(gganimate export to gif) 目录
最新文章
- 百度一款前端图片合成工具库MI开源啦!
- keil uvision2 c语言调试,keil uvision2
- 上线前,一款To B产品要做哪些运营动作?
- java 地图渲染_离屏渲染在车载导航中的应用
- 关于ping与tracert网络命令详解
- 饭卡管理系统mysql_数据库饭卡管理系统.doc
- 深度linux u盘安装教程,deepin 2014 u盘安装教程:u盘安装deepin2014步骤
- 为什么要使用工作流引擎
- 微信网址遮罩引导法升级版,微信自动跳转默认浏览器打开HTML
- Beyond Compare4过期使用方法
- python 幂运算_python幂运算
- 【java获取路径】java 获取当前类的路径
- 基于WEB开发的高校学籍管理系统设计与实现
- 复杂网络分析(三)(UCINET)
- 什么是平台(平台商业模式)
- 爆笑网文-泰坦尼克号空中巴士版
- 2021创新科技项目申报书找谁写,项目申报申请书怎么写
- 构建用户安全评级,UGC智能化审核应用实践
- 天津成考计算机高分技巧,成考数学不可触碰的雷区和得分技巧,非常实用
- 幼儿使用计算机需要注意事项,计算机在幼儿一日生活中的运用