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 x2
1  2  3
2  2  4
3  6  2
4  4  8
#绑定mydata
attach(mydata)
#为mydata数据框增加一个sum变量
mydata$sum <- x1 + x2
#为mydata数据框增加一个mean变量
mydata$mean <- (x1+x2)/2
mydata
  x1 x2 sum mean
1  2  3   5  2.5
2  2  4   6  3.0
3  6  2   8  4.0
4  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
1  2  3   5  2.5    5   2.5
2  2  4   6  3.0    6   3.0
3  6  2   8  4.0    8   4.0
4  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
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          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          1.4         0.2  setosa
2          1.4         0.2  setosa
3          1.3         0.2  setosa
4          1.5         0.2  setosa
5          1.4         0.2  setosa
6          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
1         3.5          1.4
2         3.0          1.4
3         3.2          1.3
4         3.1          1.5
5         3.6          1.4
6         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
1         3.5          1.4         0.2  setosa
2         3.0          1.4         0.2  setosa
3         3.2          1.3         0.2  setosa
4         3.1          1.5         0.2  setosa
5         3.6          1.4         0.2  setosa
6         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
1   15   1
2   18   2
3   59   1
4   48   2
5   26   1
6   58   1
7   74   1
8   85   2
9   99   2
10  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
1   15   1       Young
2   18   2       Young
3   59   1 Middle Aged
4   48   2       Young
5   26   1       Young
6   58   1 Middle Aged
7   74   1 Middle Aged
8   85   2       Elder
9   NA   2        
10  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
1   15   1       Young   FALSE
2   18   2       Young   FALSE
3   59   1 Middle Aged   FALSE
4   48   2       Young   FALSE
5   26   1       Young   FALSE
6   58   1 Middle Aged   FALSE
7   74   1 Middle Aged   FALSE
8   85   2       Elder    TRUE
9   NA   2              NA
10  52   1       Young   FALSE

对变量类型的修改,转换变量类型。

判断 转换
is.numeric() as.numeric()
is.character() as.character()
is.factor() as.factor()

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

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

微信公众号:[R语言小白速通]
主要分享一些R语言和统计学知识,提升自己,帮助他人
欢迎关注、收藏、点赞

你可能感兴趣的:(R语言变量级别数据处理)