一、向量(vector)
与数学中向量不同,这里的向量是用于存储数值型、字符型或逻辑型数据的一维数组。R中最基础的数据类型是向量。向量化编程。
用函数c来创建向量
#定义一个数值型向量
x <- c(1,2,3,4,5)
#定义一个字符串型向量
y <- c("one","two","three")
#定义一个逻辑型向量
z <- c(TRUE,T,F)
#构建等差数列
c(1:100)
seq (from = 1, to = 100)
seq (from = 1,to=100,by = 2)
#生成重负数列,重复5次2
rep(2,5)
rep(x,5)
rep(x,each = 5)
#查看类型,一个向量内部必须是同一个类型
mode(z)
向量化编程的优势,R是统计学软件,避免很多循环。
二、向量索引
1.正整数索引
R中元素索引从“1”开始,而不是“0”开始。
#创建字符串向量
z <- c("one","two","three")
# 判断某字符串是否在向量里
"one" %in% z
z[z %in% c("one","two")]
#为向量中每个元素命名
y <- c(1:5)
names(y) <- c("one","two","three","four","five")
#修改向量
x <- c(1,2,3)
x[4] <- 4
x #返回结果为 1,2,3,4
#插入数据,在第五个元素后插入一个33
append(x = v,values = 33, after = 5)
#删除向量
rm(v)
#删除向量中某个元素,先用负数索引,再把新的向量赋值给原来的向量
三、向量运算
x <- c(1:10)
x+1 #向量中每个元素都加1,其他数学计算类似
#向量与向量的运算
y <- seq(1,100,length.out = 10)
x+y
#乘幂运算
x**y
# 取余运算
x%%y
# 整除运算
x%/%y
#对应位置运算,长的向量元素个数必须是段向量元素个数的整数倍
#向量运算函数
#绝对值
abs(x)
#平方根
sqrt(x)
#对数
log(16,base=2)
#指数
exp(x)
#向上取整
ceiling()
#向下取整
floor()
#求和运算
vec <- 1:100
sum(vec)
#方差
var(vec)
#标准差
sd(vec)
#中位数
median(vec)
#分位数
quantile(vec)
#返回索引值
t <- c(1,3,4,9,6)
which.max(t) #返回值为4(9的索引)
四、矩阵
矩阵要求所有元素的类型一致。
#创建矩阵
x <- 1:20
m <- matrix(x,nrow = 4,ncol = 5)
m <- matrix(1:20,4,5,byrow = T) #按行排列
m <- matrix(1:20,4,5)
rnames <- c("r1","r2","r3","r4")
cnames <- c("c1","c2","c3","c4")
dimnames(m) <- list(rnames,cnames)
五、数组
x <- 1:20
dim(x) <- c(2,2,5) #三维数组,长宽高为2,2,5
六、矩阵索引
m <- matrix(1:20,4,5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> m[1,2]
[1] 5
> m[1,c(3,4)]
[1] 9 13
> m[2]
[1] 2
> m[2,]
[1] 2 6 10 14 18
> m[,2]
[1] 5 6 7 8
> m[-1,2]
[1] 6 7 8
> m[-1,-2]
[,1] [,2] [,3] [,4]
[1,] 2 10 14 18
[2,] 3 11 15 19
[3,] 4 12 16 20
七、列表
列表中的对象可以是R中的任何数据结构,甚至是列表本身。
a <- 1:20 #创建向量
b <- matrix(1:20,4) #创建矩阵
mlist <- list(a,b) #创建列表存储
mlist
# 列表索引
mlist[1]
state.center[c("x","y")]
删除列表元素可以采用负索引的方式,再赋值给原来的列表
八、数据框
数据框是一种表格式的数据结构。数据框实质上是一个列表。
#创建数据框
data.frame
#访问数据框
state[1]
state[c(2,4)] #访问第二行第四列
#使用$访问数据
state$state.name
九、因子
变量分类
1.名义型变量,“省份”“城市名”等
2.连续型变量
3.有序型变量,“优良中差”等(很像数据挖掘中的“序数属性”)
因子,在R中名义型变量和有序型变量称为因子。
#创建因子
f <- factor(c("red","greeb","red","blue","green"))
#给因子排序
week <- factor(c("Mon","Thu","Fri","Fri","Wed","Sun","Tue","Sat"),ordered = T,levels = c("Mon","Tue","Wed","Thu","Fri","Sat","Sun"))
cut函数
十、缺失数据的分类
NA代表缺失值。
na.rm (函数中参数)去除NA
na.omit()
十一、字符串
#统计字符串长度
nchar("")
#合并向量
paste(c("ab","cd","ef"))
#
strsplit("hello world"," ")
十二、日期和时间
# 查看当前系统日期
Sys.Date()
# 将字符串转换成日期类型
a <- "20220630"
as.Date(a,format = "%Y-%m-%d")
#更多参数查看strftime
?strftime
#生成时间序列
seq(as.Date("2022-06-06"),as.Date("2022-07-06"),by = 5)