服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - R语言 - R语言变量级别的数据处理操作

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

2022-01-07 14:49「已注销」 R语言

这篇文章主要介绍了R语言变量级别的数据处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

变量级别的数据处理无非是对变量的增删改查。

即增加新的变量

R语言中,增加一个新变量形式语句如下:

变量名 <- 表达式

表达式可以包含多种运算符和函数。常见运算符包括:

运算符 描述
+
-
*
/
^或** 求幂
x%%y 求余(x mod y)。5%%2的结果为1。
x%/%y 整数除法。5%/%2的结果为2。

示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#创建一个数据框
mydata <- data.frame(x1 = c(2,2,6,4),
+                      x2 = c(3,4,2,8))
mydata
  x1 x2
  2  3
  2  4
  6  2
  4  8
#绑定mydata
attach(mydata)
#为mydata数据框增加一个sum变量
mydata$sum <- x1 + x2
#为mydata数据框增加一个mean变量
mydata$mean <- (x1+x2)/2
mydata
  x1 x2 sum mean
  2  3   5  2.5
  2  4   6  3.0
  6  2   8  4.0
  4  8  12  6.0
#解除绑定
detach(mydata)
#用transform函数可以达到同样效果
mydata <- transform(mydata,sumx = x1+x2,meanx = (x1+x2)/2)
mydata
  x1 x2 sum mean sumx meanx
  2  3   5  2.5    5   2.5
  2  4   6  3.0    6   3.0
  6  2   8  4.0    8   4.0
  4  8  12  6.0   12   6.0

attach与detach函数用于绑定和解除数据集,以简化数据处理过程。如果不使用二者,生成sum变量,则每个变量名之前需要加上数据集名称+$符号。

使用transform函数,语法格式为transform(数据集名称,变量名=表达式)

随着R语言的发展出现了tidyverse系列包可以进行完整的数据分析流程。本基础教程以传统方法为主,tidyverse系列日后涉及。

即删除不需要的变量或选择需要的变量。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#将R语言自带鸢尾花数据集赋值给data
data <- iris
#查看前5行
head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
          5.1         3.5          1.4         0.2  setosa
          4.9         3.0          1.4         0.2  setosa
          4.7         3.2          1.3         0.2  setosa
          4.6         3.1          1.5         0.2  setosa
          5.0         3.6          1.4         0.2  setosa
          5.4         3.9          1.7         0.4  setosa
#选择第3到5的变量,即删除1到2的变量
data <- data[,c(3:5)]
#查看新的数据
head(data)
  Petal.Length Petal.Width Species
          1.4         0.2  setosa
          1.4         0.2  setosa
          1.3         0.2  setosa
          1.5         0.2  setosa
          1.4         0.2  setosa
          1.7         0.4  setosa
#生成一个包含变量名字的向量vars
vars <- c('Sepal.Width','Petal.Length')
#将R语言自带鸢尾花数据集赋值给data
data <- iris
#从data数据集选择包含vars内变量的数据
data <- data[vars]
#查看前5行
head(data)
  Sepal.Width Petal.Length
         3.5          1.4
         3.0          1.4
         3.2          1.3
         3.1          1.5
         3.6          1.4
         3.9          1.7
#将R语言自带鸢尾花数据集赋值给data
data <- iris
#使用%in%判断data内的变量名是否为Sepal.Length,是返回TRUE,否则返回FALSE。赋值给myvars
myvars <- names(data)%in%c('Sepal.Length')
#!myvars反向选择,生成不包含Sepal.Length变量的数据集newdata
newdata <- data[!myvars]
#查看前5行
head(newdata)
  Sepal.Width Petal.Length Petal.Width Species
         3.5          1.4         0.2  setosa
         3.0          1.4         0.2  setosa
         3.2          1.3         0.2  setosa
         3.1          1.5         0.2  setosa
         3.6          1.4         0.2  setosa
         3.9          1.7         0.4  setosa

包括对变量的值的修改和对变量的类型的修改。两者有时存在某些共变,如连续变量离散化就是为将连续变量类型转化为分类变量(因子)类型。

变量的值的修改(重编码)包括连续变量离散化、分类变量取值合并。

可以使用R中的一个或多个逻辑运算符重编码数据。逻辑运算符表达式返回TRUE或FALSE。

运算符 描述
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
!x 非x
x竖线y x或y
x&y x和y
isTRUE(x) 测试x是否为TRUE

x竖线y为x|y,本文章编码显示问题才用竖线代替|

变量修改的语法为variable[condition]<-expression

其中,variable为变量名,condition为条件,expression为赋值。

在condition的值为TRUE时执行赋值。

示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#首先生成一个数据框
age <- c(15,18,59,48,26,58,74,85,99,52)
sex <- c(1,2,1,2,1,1,1,2,2,1)
ship <- data.frame(age,sex)
ship
   age sex
   15   1
   18   2
   59   1
   48   2
   26   1
   58   1
   74   1
   85   2
   99   2
  52   1
#将年龄取值99视为缺失值NA
ship$age[ship$age==99] <- NA
#将年龄大于75的取值为Elder,赋值给agecat变量。
ship$agecat[ship$age>75] <- 'Elder'
#将年龄介于55-75之间的取值为Middle Aed,赋值给agecat变量。
ship$agecat[ship$age>=55 & ship$age<=75] <- 'Middle Aged'
#将年龄小于55的取值为Young,赋值给agecat变量。
ship$agecat[ship$age<55] <- 'Young'
ship
   age sex      agecat
   15   1       Young
   18   2       Young
   59   1 Middle Aged
   48   2       Young
   26   1       Young
   58   1 Middle Aged
   74   1 Middle Aged
   85   2       Elder
   NA   2        <NA>
  52   1       Young
#合并分类变量取值
#将agecat为Elder的取值为TRUE,赋值给isElder变量
ship$isElder[ship$agecat=='Elder'] <- TRUE
#将agecat不是Elder的取值为FALSE,赋值给isElder变量
ship$isElder[ship$agecat !='Elder'] <- FALSE
ship
   age sex      agecat isElder
   15   1       Young   FALSE
   18   2       Young   FALSE
   59   1 Middle Aged   FALSE
   48   2       Young   FALSE
   26   1       Young   FALSE
   58   1 Middle Aged   FALSE
   74   1 Middle Aged   FALSE
   85   2       Elder    TRUE
   NA   2        <NA>      NA
  52   1       Young   FALSE
判断 转换
is.numeric() as.numeric()
is.character() as.character()
is.factor() as.factor()

某些R函数需要指定数据集类型,as.datatype()函数可以使数据转换为所要求的的格式。

查看变量类型,使用上述表格中判断函数或str()函数。

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

原文链接:https://blog.csdn.net/renewallee/article/details/102903861

延伸 · 阅读

精彩推荐
  • R语言R语言可视化存储矢量图实现方式

    R语言可视化存储矢量图实现方式

    这篇文章主要为大家介绍了R语言存储矢量图的实现方式过程,有需要的朋友可以借鉴参考下,希望能够有所你帮助,祝大家多多进步,早日升职加薪...

    Kanny广小隶9392022-01-20
  • R语言R语言中c()函数与paste()函数的区别说明

    R语言中c()函数与paste()函数的区别说明

    这篇文章主要介绍了R语言中c()函数与paste()函数的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    yiyu_j11152022-01-12
  • R语言R语言编程学习绘制动态图实现示例

    R语言编程学习绘制动态图实现示例

    这篇文章主要介绍了R语言编程学习绘制动态图实现示例,有需要的的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    微小冷7652022-01-18
  • R语言R语言绘制散点图实例分析

    R语言绘制散点图实例分析

    在本篇文章里小编给大家整理的是一篇关于R语言绘制散点图实例分析内容,有需要的朋友们可以学习下。...

    w3cschool6942022-01-06
  • R语言R语言-使用ifelse进行数据分组

    R语言-使用ifelse进行数据分组

    这篇文章主要介绍了R语言-使用ifelse进行数据分组,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    小力丸12042022-01-10
  • R语言R studio 批量注释的快捷方式

    R studio 批量注释的快捷方式

    这篇文章主要介绍了R studio 批量注释的快捷方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    JasonKQLin13342022-01-04
  • R语言聊聊R语言中Legend 函数的参数用法

    聊聊R语言中Legend 函数的参数用法

    这篇文章主要介绍了聊聊R语言中Legend 函数的参数用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Gavin姓陈6352021-12-28
  • R语言R语言创建矩阵的实现方法

    R语言创建矩阵的实现方法

    这篇文章主要介绍了R语言创建矩阵的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随...

    hjk_caesar9462021-12-27