R语言基础(3)-变量|运算符|变量简单操作
"pythonic生物人"的第80篇分享。
本文简要介绍R变量及变量简单操作
本文速览
更多精彩:
1、R创建变量
语法
赋值符号
R运算符
2、变量简单操作
创建data.frame类型变量
缺失值操作
变量的重命名
变量数据类型转换
merge()函数:横向合并两个数据框(需要索引)
cbind()函数:横向合并两个数据框(无需索引)
rbind()函数: 纵向合并两个数据框
subset()函数:取数据框子集
随机抽样
SQL 语句操作数据框
1、R创建变量
-
语法
variable <- expression
-
赋值符号
= 给变量赋值
<- 给变量赋值
-
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(1, 2, 3, 4, 5)
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(32, 45, 25, 39, 99)
q1 <- c(5, 3, 3, 3, 2)
q2 <- c(4, 5, 5, 3, 2)
q3 <- c(5, 2, 5, 4, 1)
q4 <- c(5, 5, 5, NA, 2)
q5 <- c(5, 5, 2, NA, 1)
leadership <- data.frame(manager, date, country, gender, age,
q1, q2, q3, q4, q5, stringsAsFactors=FALSE)
leadership
-
缺失值操作
函数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
排除缺失值
x <- c(1, 2, NA, 3)
y <- sum(x, na.rm=TRUE)#na.rm=TRUE删除NA值
na.omit(leadership)#na.omit删除所有的NA值
-
变量的重命名
fix直接修改
names函数修改
names(leadership)[2] <- "testDate"#names函数修改
names(leadership)[6:10] <- c("item1", "item2", "item3", "item4", "item5")#向量助批量修改名字
-
变量数据类型转换
判 断 转 换
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()
-
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