接下了我们继续了解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不断的减去每个累加结果得到的。