初步的数据处理,通常要创建新的变量。其实,创建新变量可以:

  • 避开未经处理的数据未有所需数据的难处;
  • 变换一些已有数据,以更好的为下一步分析作准备;

而常创建的新变量有:

  • 缺失值指针 (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语言数据处理 之 创建新变量相关推荐

  1. R语言给数据集创建新变量

    再数据分析的过程中往往需要先创建新变量再进行分析.根据经验,主要包括两方面. 1.独立创建变量,再利用新变量数据进行数据整理和分析,这样比较简单,代码如下: data$newvar<-data$ ...

  2. R语言创建新变量方法

    R语言创建新变量方法 在数据分析中,可能需要对数据进行求和.求均值等处理,并且将处理后的数据重新保存到原来的数据框中,这里提供三种可供解决的方法: 数据框$变量名 <- 表达式.若原数据框中含有 ...

  3. R语言变量的处理(创建新变量 变量重新赋值

    创建新变量: 方法一: #在mydata数据库中创建新变量sum,sum是mydata数据库中x1和x2之和 mydata$sum <- mydata$x1 + mydata$x2 #在myda ...

  4. R语言使用两个分类变量创建双向表(Two Way Table、两个分类变量的频率表)实战: 矩阵的双向表、dataframe的双向表、条形图和马赛克图来可视化频率表

    R语言使用两个分类变量创建双向表(Two Way Table.两个分类变量的频率表)实战: 矩阵的双向表.dataframe的双向表.条形图和马赛克图来可视化频率表 目录

  5. 基础004:R语言数据处理和变换——dplyr

    dplyr 背景简介 安装和数据准备 常用函数 变量筛选select 数据筛选filter 排序arrange 创建新变量mutate 本文"植物微生物组"公众号原创,ID: pl ...

  6. R语言数据处理——基础篇 data.frame基本操作

    文章目录 R语言数据处理--基础篇 data.frame基本操作 data.frame的创建 数据访问.条件筛选与删除 数据访问 数据筛选 删除 使用`gather()`进行data.frame数据格 ...

  7. R语言为dataframe添加新的数据列(add new columns):使用R原生方法、data.table、dplyr等方案

    R语言为dataframe添加新的数据列(add new columns):使用R原生方法.data.table.dplyr等方案 目录 R语言为dataframe

  8. R语言为dataframe添加新的数据列(横向拼接、Appending columns,Unioning columns):使用R原生方法、data.table、dplyr等方案

    R语言为dataframe添加新的数据列(横向拼接.Appending columns,Unioning columns):使用R原生方法.data.table.dplyr等方案 目录 R语言为dat

  9. R语言gganimate包创建可视化gif动图、并使用anim_save函数保存可视化gif动图(gganimate export to gif)

    R语言gganimate包创建可视化gif动图.并使用anim_save函数保存可视化gif动图(gganimate export to gif) 目录

最新文章

  1. 百度一款前端图片合成工具库MI开源啦!
  2. keil uvision2 c语言调试,keil uvision2
  3. 上线前,一款To B产品要做哪些运营动作?
  4. java 地图渲染_离屏渲染在车载导航中的应用
  5. 关于ping与tracert网络命令详解
  6. 饭卡管理系统mysql_数据库饭卡管理系统.doc
  7. 深度linux u盘安装教程,deepin 2014 u盘安装教程:u盘安装deepin2014步骤
  8. 为什么要使用工作流引擎
  9. 微信网址遮罩引导法升级版,微信自动跳转默认浏览器打开HTML
  10. Beyond Compare4过期使用方法
  11. python 幂运算_python幂运算
  12. 【java获取路径】java 获取当前类的路径
  13. 基于WEB开发的高校学籍管理系统设计与实现
  14. 复杂网络分析(三)(UCINET)
  15. 什么是平台(平台商业模式)
  16. 爆笑网文-泰坦尼克号空中巴士版
  17. 2021创新科技项目申报书找谁写,项目申报申请书怎么写
  18. 构建用户安全评级,UGC智能化审核应用实践
  19. 天津成考计算机高分技巧,成考数学不可触碰的雷区和得分技巧,非常实用
  20. 幼儿使用计算机需要注意事项,计算机在幼儿一日生活中的运用

热门文章

  1. php文件怎么打开? 教你用什么软件打开php文件
  2. oracle pfm,多平台监控管理 日立JP1/PFM 性能详解
  3. matlab 逐步回归代码,(最新整理)逐步回归matlab程序
  4. 使用postgresql和Arcgis创建路网拓扑结构
  5. 扫雷计算机教案,四下选修拓展《扫雷游戏》教案
  6. ubuntu系统安装谷歌浏览器和搜狗输入法
  7. Cubieboard的U-boot以太网驱动移植
  8. DTU是什么?浅解DTU
  9. 让NFT-Fi流行起来
  10. 北京政策——户口与房子