点击蓝字关注我
用R进行数据分析-04
*以下内容是我在R语言学习过程中的每一课的重点笔记记录。
16
数据结构
数据类型是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
R中数据类型:
① 数值型:数值型数据可直接用于计算,加减乘除;
② 字符串型:可以进行连接、转换、提取等;
③ 逻辑性:真或假(logical);
④ 日期型等。
R对象:即object,它是指可以赋值给变量的任何事物,包括常量、数据结构、函数甚至图形。对象都拥有某种模式,描述了此对象是如何存储的,以及某个类。
R中数据结构:向量、矩阵、数组、列表、因子、数据框、时间序列等。
17
向量(R的向量化编程)
Vector,向量,与数学中向量不同,其实是用于存储数值型、字符型或逻辑型数据的一维数组,类似数学上的集合。
函数c用来创建向量,c即concatenate/collect/combine,如x
R字符串必须加引号
T=TRUE,F=FALSE(必须加引号)
C(1:100) 构造1到100,等差比为1的等差数列
seq(from=1,to=100,by=2) 等差比为2
seq(from=1,to=100,length.out=10) 输出前10个值
rep(2,5) 重复5次2
rep(x,each=5) (x为上面提到的已赋值1,2,3,4,5的向量)即111112222233333…
rep(x,each=5,times=2) 即上面的输出结果重复两次
注:向量中的数据类型必须相同
mode(a) 查看a向量的类型
计算则类似于python中的numpy
向量化编程的优势在于避免多次循环
x[x>3] 取x向量中大于3的值
rep(x,c(2,4,6,1,3)) 将x中的每个值设定重复次数
18
向量索引
①正负数索引
x
length(x) 可统计x中元素个数
x[1] 第一个元素(R中元素排序从1开始而不是0开始,这与python不同)
x[-19] 表示除第19个元素外访问其他所有元素
x[c(4:18)] 输出第4到第18个元素
x[c(1,23,45,67)] 输出第1,23,45,67个元素
不可以同时输出负数与正数索引
②逻辑索引
y
y[c(T,F,T,F,T,T,F,T,F,T)]只输出逻辑值为T的元素,即输出第1,3,5,6,8,10号元素
y[c(T,F)] 即1T 2F 3T 4F 5T 6F 7T 8F 9T 10F(若产生缺失值则表示为NA)
y[y>5] 即只输出大于5的元素
y[y>5 & y<9] 即只输出6,7,8
③对于字符串向量,符号为 %in%
c(“one”,”two”,”three”,”four”,”three”)
“one” %in% z 输出TRUE
z[z %in% c(“one”,”two”)]
输出“one””two”,相当于z[T,T,F,F,F] 还是逻辑索引,所以输出前两个值
④利用元素名称进行访问
如y
names(y)
输出结果为:
one two three
1 2 3
然后可以利用名称访问列
即y[“one”] 输出结果为1
⑤ 为向量添加元素
如x
x[101]
x[c(102,103,104)]
批量复制未进行赋值的元素全部表示为NA
append(x,values=99,after=5)
在第5个位置插入值99,若after为0则表示在向量头部插入数据
rm(x) 删除向量x
若想删除向量中某元素,则:
y
重新给某元素赋值:
y[“four”]
注意不可以赋值给字符串,否则所有元素都会变成字符串型
19
向量运算
一、符号意义
x
x+1 即每个元素均加1
x-3 即每个元素均减3
x*y x/y x**y(幂运算)
x%%y(求余数) x%/%y(整除运算)
若两向量不相等,则循环相加,但必须匹配,长的必须是短的整数倍
%in%: 包含运算符,判断左边的值是否在右边的对象中
c(1,2,3) %in% c(1,2,2,4)
输出结果为TRUE TRUE FALSE
x==y 判断x与y是否相等
二、向量运算中数学函数
x
abs(x) 返回绝对值
sqrt(x) 返回平方根
log(16,base=2)
第一个为要求的值,第二个为底数,即log216
log16 默认为自然对数
log10(10) 即以10为底求对数,输出结果为1
exp(x) 计算x向量中每个元素的指数
ceiling(x) 返回不小于x的整数
floor(x) 返回不大于x的整数
trunc(x) 返回x的整数部分
round(x,digits=2)
将x向量中每一个元素四舍五入,保留两位小数
signif(x,digits=2)
将x向量中每一个元素四舍五入,保留两位有效数字
三、统计函数
v
sum(v) 求和
max(v) min(v) 返回最大最小值
range(v) 直接返回向量v的最大与最小值
mean(v) 返回均值
var(v) 返回方差
round(var(v),digits=2)
返回向量v方差,保留两位有效数字
sd(v) 返回标准差
prod(v)
返回连乘的积,即1*2*3*4*……*100
median(v) 返回向量v的中位数
quantile(v,c(0.4,0.5,0.8))
返回向量v的四分位数,五分位数,八分位数间距
四、找索引值
t
which.max(t)
返回t向量中最大值的位置,即索引值6
which.min(t)
返回t向量中最小值的位置,即索引值1
which(t==7)
返回t向量中元素值为7的位置,即索引值5
which(t>7)
返回t向量中元素值大于7的位置,即索引值6,7
扫码关注我
微信号 : CYQ-start-2020
抖音号:1363126936