从我们
生信技能树
历年的几千个马拉松授课学员里面募集了一些优秀的创作者,某种意义来说是传承了我们生信技能树的知识整理和分享的思想!
今天的是三周合计15天的数据挖掘授课学员一点一滴整理的授课知识点笔记哦,还有互动练习题哈,欢迎大家点击文末的阅读原文去关注我们学员的公众号哦!
1、向量的操作
1.1 赋值
1) 规范写法
x
x
[1] 1 4 6 9 0 4
2) 随意的写法
x = c(1,4,6,9,0,4)
3) 赋值和输出(两个代码用";"分隔)
x = c(1,4,6,9,0,4); x
变量的命名
- 可以用字母、数字、点、逗号和下划线
- 不能用R自带的函数名和常用的R包名还有中文
1.2 简单的数学计算
'''
向量的运算就是将里面的元素一个个拿出来进行计算。
'''
x 1,4,6,9,0,4)
x + 1
log(x)
1.3 比较运算,生成
逻辑值
向量
'''
向量的比较同向量的运算一样,将向量中的元素逐个取出,然后进行比较。向量里面有多少个元素,就返回多少个结果。
'''
x > 3
x == 3
1.4 初级统计
max(x)
min(x)
mean(x)
median(x)
var(x)
sd(x)
sum(x)
length(x)
a q(2, 100, 3)
paste0(rep('student', times=length(a)), a)
unique(x)
duplicated(x)
table(x)
sort(x)
sort(x,decreasing=T)
arrange(x)
rank(x)
"""
rank(x, na.last = TRUE,
ties.method = c("average", "first", "last", "random", "max", "min"))
"first" 是最基本的排序,小数在前大数在后,相同元素先者在前后者在后。
"max" 是相同元素都取该组中最好的水平,即通常所讲的并列排序。
"min" 是相同元素都取该组中最差的水平,可以增大序列的等级差异。
"
average" 是相同元素都取该组中的平均水平,该水平可能是个小数。
"random" 是相同元素随机编排次序,避免了“先到先得”,“权重”优于“先后顺序”的机制增大了随机的程度。
"""
order(x)
tips
:
在终端中运行
"?函数"
可以查看该函数的帮助文档
1.5 对两个向量的操作
A. 两个等长向量的操作
等长向量运算遵循一一对应原则,下标相等的数之间进行运算。
(1) 比较运算,生成等长的逻辑向量
x = c(1, 5, 9, 3, 6, 88)
y = c(8, 5, 3, 4, 4, 6)
x == y
y == x
x <= y
(2) 数学计算
(3) 连接
z = paste(x,y,sep='.')
as.numeric(z)
class(as.numeric(z))
# "numeric"
(4) 交集、并集、差集
intersect(x, y) # 交集
union(x, y) # 并集
setdiff(x, y) # 谁在前就取谁里面的,在x中扣除y中有的
setdiff(y, x) # 在y中减去x中的元素
(5) %in%
在两个向量中搜索有或者没有。遍历x中的每一个元素,然后逐个与y中的元素去比较(如下图所示),如果有就返回TURE,如果比较完后还没有找到,那么就返回FALSE。
x = c(5,8,6,4,7)
y = c(3,1,9,8,5)
x %in% y
y %in% x
tips: x==y中的要求比x%in%y更加严格,x==y要求位置和值都一样,而x%in%y只要求值相等。因此x%in%y得到的元素比x==y要多。
B. 两个不等长向量的操作
当两个不等长的向量进行运算时,不仅不会报错,还能够正常进行运算,因为短的向量会发生
循环补齐
。计算后的结果长度按照最长的那个向量来算。
x = 1:9
y = 4:9
x == y
length(x == y) # 9
'''
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Warning message:
In x == y : longer object length is not a multiple of shorter object length
'''
因此利用循环补齐,我们就可以简化代码。
paste0(rep('x', times=8), seq(2,18,2))
paste0('x', seq(2,18,2))
向量的筛选
x = c(3, 66, 88, 90, 87, 18, 28, 30, 58)
x[x>33]
x[x==88]
x[8]
x[c(1,8)]
x[-1]
2.7 修改向量中的某个或者某些元素
R中的修改都要赋值,没有赋值就没有发生过。