一、单变量序列排序
1、rank()函数:返回向量中每个元素对应的秩
2、sort()函数:对向量从小到大排序
data <- c(5,6,8,2,9,3)
sort(data) # 2 3 5 6 8 9
sort(data, decreasing = T) #设置降序排列, 9 8 6 5 3 2
3、order()函数:返回元素对应的位置,默认升序
###向量排序
data <- c(5,6,8,2,9,3)
order(data) # 4 6 1 2 3 5
data[order(data)] #索引位置对应的元素值,等同于sort(data)排序
###数据框排序
d <- data.frame(
x=c(13,45,13,45,13),
y=c(3,1,2,2,3),
t=c(56,7,68,3,1))
d[order(d$x,d$y),] #x升序 y升序
x y t
3 13 2 68
1 13 3 56
5 13 3 1
2 45 1 7
4 45 2 3
d[order(-d$x,d$y),] #x降序 y升序
x y t
2 45 1 7
4 45 2 3
3 13 2 68
1 13 3 56
5 13 3 1
二、数据表(矩阵)排序
1、order()函数
2、arrange()函数:针对数据框,返回基于某列排序后的数据框,方便多重排序,默认升序
d <- data.frame(
x=c(13,45,13,45,13),
y=c(3,1,2,2,3),
t=c(56,7,68,3,1))
arrange(d,x,-y) #x升序 y降下序
x y t
1 13 3 56
2 13 3 1
3 13 2 68
4 45 2 3
5 45 1 7
三、因子类型排序
1、relevel函数
2、factor函数
3、order函数
四、筛选函数
1、which函数
d <- data.frame(
x=c(13,45,13,45,13),
y=c(3,1,2,2,3),
t=c(56,7,68,3,1))
d[which(d$x==13), ] #返回x列是13的行
x y t
1 13 3 56
3 13 2 68
5 13 3 1
d[which(d$x %in% c('45', '80')), ] #返回x列中在c向量集中的行
x y t
2 45 1 7
4 45 2 3
2、filter函数:仅用于数据框
##逻辑运算符
x==y,x>y,x>=y,x
3、select()函数:仅用于数据框
4、subset()函数::用于所有数据集
d <- data.frame(
x=c(13,45,13,45,13),
y=c(3,1,2,2,3),
t=c(56,7,68,3,1))
subset(d, #数据集
x="13"| y="2" #筛选条件
select=t #需要显示的列
)
t
1 56
3 68
4 3
5 1
5、top_n()函数
d <- data.frame(
x=c(13,45,13,45,13),
y=c(3,1,2,2,3),
t=c(56,7,68,3,1))
top_n(d,n = 2, wt = x)
x y t
1 45 1 7
2 45 2 3