dplyr 数据操作 常用函数(3)

接下了我们继续了解dplyr中有用的函数

1、if_else()

if_else主要用于在数据做判断用

x<-data.frame(id=1:6,
              name=c("wang","zhang","li","chen","zhao","song"),
              shuxue=c(89,85,68,79,96,53),
              yuwen=c(77,68,86,87,92,63),
              shengwu=c(85,68,78,68,98,96))

if_else(x[,3:4]>80,"优","差")

以上结果是对数据框中第3和第4列数据进行判断后显示的。

2、lead()和lag()

lead(x, n = 1L, default = NA, order_by = NULL, ...)

lag(x, n = 1L, default = NA, order_by = NULL, ...) 

lead和lag函数主要用于替换数据,lead表示由前向后替换,lag表示由后向前替换,n表示替换的个数,default表示要替换的结果,默认为na 。order_by是根据某一列进行排序。

x<-data.frame(id=1:6,
              name=c("wang","zhang","li","chen","zhao","song"),
              shuxue=c(89,85,68,79,96,53),
              yuwen=c(77,68,86,87,92,63),
              shengwu=c(85,68,78,68,98,96))

mutate(x,huaxue=lag(x$shuxue,1,88))

以上操作是把shuxue的数据最后一位替换成88然后生成新列huaxue数据。

同理也可以用lead把数据进行数据替换。

3、nth()

nth(x, n, order_by = NULL, default = default_missing(x))

从向量中提取数据,注x为向量

a<-5:15
b<-12:5
nth(a,3)

nth(a,-5)

可以在n前面加符号的形式进行,反向提取数据。

nth(a,3,b)

根据b的序列方向进行提取,并且从b的第一个值开始进行读取。

4、n_distinct()

n_distinct(..., na.rm = FALSE)

计算非重复值的个数

a<-sample(1:5,10,rep=T)
a

n_distinct(a)

[1] 4  

函数的效果相当于length(unique(a))  

5、order_by()

order_by(order_by, call)  

order_by表示数据排序的形式,call表示用于输出结果的序列  

order_by(10:1,cumsum(1:10))

cumsum(1:10)

[1]  1  3  6 10 15 21 28 36 45 55

以上是1-10数据累加的结果

最后order_by的结果是用最大值55不断的减去每个累加结果得到的。  

  

原文地址:https://www.cnblogs.com/wkslearner/p/5761348.html