vlambda博客
学习文章列表

R语言基础(3)-变量|运算符|变量简单操作

"pythonic生物人"的第80篇分享R语言基础(3)-变量|运算符|变量简单操作R语言基础(3)-变量|运算符|变量简单操作

本文简要介绍R变量及变量简单操作

本文速览

更多精彩:

1、R创建变量
语法
赋值符号 
R运算符

2、变量简单操作
创建data.frame类型变量
缺失值操作
变量的重命名
变量数据类型转换
merge()函数:横向合并两个数据框(需要索引)
cbind()函数:横向合并两个数据框(无需索引)
rbind()函数: 纵向合并两个数据框
subset()函数:取数据框子集
随机抽样
SQL 语句操作数据框 

1、R创建变量

  • 语法

variable <- expression
  • 赋值符号

= 给变量赋值

R语言基础(3)-变量|运算符|变量简单操作

<- 给变量赋值

R语言基础(3)-变量|运算符|变量简单操作

  • R运算符

赋值符号右边的表达式会涉及到运算符。算术运算符

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

**逻辑运算符 **

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

2、变量简单操作

  • 创建data.frame类型变量

类似python中的pandas.DataFrame

manager <- c(12345)
date <- c("10/24/08""10/28/08""10/1/08""10/12/08""5/1/09")
country <- c("US""US""UK""UK""UK")
gender <- c("M""F""F""M""F")
age <- c(3245253999)
q1 <- c(53332)
q2 <- c(45532)
q3 <- c(52541)
q4 <- c(555NA2)
q5 <- c(552NA1)
leadership <- data.frame(manager, date, country, gender, age,
                         q1, q2, q3, q4, q5, stringsAsFactors=FALSE)
leadership 
R语言基础(3)-变量|运算符|变量简单操作
  • 缺失值操作

函数is.na() 允许你检测缺失值是否存在,它将返回一个相同大小的对象,如果某个元素是缺失值,相应的位置将被改写为TRUE,不是缺失值的位置则为FALSE。正无穷和负无穷分别用Inf和 –Inf 所标记。因此5/0返回Inf。不可能的值(比如说, sin(Inf))用NaN符号来标记(not a number,不是一个数)。若要识别这些数值,你需要用到is.infinite() 或is.nan()。

leadership$age[leadership$age == 99] <- NA
#将age列等于99的值替换为为NA,使用逻辑表达式:leadership$age == 99
leadership

R语言基础(3)-变量|运算符|变量简单操作排除缺失值

x <- c(12NA3)
y <- sum(x, na.rm=TRUE)#na.rm=TRUE删除NA值

na.omit(leadership)#na.omit删除所有的NA值
R语言基础(3)-变量|运算符|变量简单操作
  • 变量的重命名

fix直接修改R语言基础(3)-变量|运算符|变量简单操作
names函数修改

names(leadership)[2] <- "testDate"#names函数修改
names(leadership)[6:10] <- c("item1""item2""item3""item4""item5")#向量助批量修改名字
R语言基础(3)-变量|运算符|变量简单操作
  • 变量数据类型转换

判 断    转 换
is.numeric()   as.numeric()
is.character()   as.character()
is.vector()   as.vector()
is.matrix()   as.matrix()
is.data.frame()  as.data.frame()
is.factor()   as.factor()
is.logical()   as.logical()
R语言基础(3)-变量|运算符|变量简单操作
  • merge()函数:横向合并两个数据框(需要索引)

total <- merge(dataframeA, dataframeB, by="ID")#by指定1个索引

total <- merge(dataframeA, dataframeB, by=c("ID","Country"))#by指定多个索引
  • cbind()函数:横向合并两个数据框(无需索引)

类似linux中的paste

 total <- cbind(dataframeA, dataframeB)
  • rbind()函数: 纵向合并两个数据框

类似linux中的cat

total <- rbind(dataframeA, dataframeB)
  • subset()函数:取数据框子集

newdata <- subset(leadership, age >= 35 | age < 24,select=c(q1, q2, q3, q4))
#选择所有age值大于等于35或age值小于24的行,保留了变量q1到q4

newdata <- subset(leadership, gender=="M" & age > 25,select=gender:q4)
#选择所有25岁以上的男性,并保留了变量gender到q4( gender、 q4和其间所有列)
  • 随机抽样

mysample <- leadership[sample(1:nrow(leadership), 3, replace=FALSE),]
##从leadership中1:5行中,随机抽取3个观测,无放回(replace=FALSE控制)。
  • SQL 语句操作数据框

#安装sqldf包
options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")))#设置镜像源
install.packages('sqldf',dependencies=TRUE)
library("sqldf")

参考资料

r-in-action-second-edition

同系列文章