R语言排序及筛选函数

一、单变量序列排序

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

你可能感兴趣的:(r语言)