文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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

即增加新的变量

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 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系列日后涉及。

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


#将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时执行赋值。

示例:


#首先生成一个数据框
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()函数。

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

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯