1、分组统计(包括分组求和、均值、中位数等)
irisSum <- iris %>%
dplyr::group_by(Species) %>%
dplyr::summarise(meanSize = mean(Sepal.Length))
#统计函数:mean(),meadian(),quantile(),min(),max(),sd(),var().
2、排序
#数据框排序。默认按顺序,关键字desc逆序
irisOrder <- iris %>%
dplyr::arrange(Sepal.Length)
#dplyr::arrange(desc(Sepal.Length))
3、选取
#选取
##条件过滤
irisFilter <- iris %>%
dplyr::filter(Sepal.Length >= 0.1)
irisFilter <- iris %>%
dplyr::filter(between(Sepal.Length,4,5))
##选取列,结果为数据框
irisSelect <- iris %>%
dplyr::select(contains('len'))
irisSelect <- iris %>%
dplyr::select(-contains('len'))
irisSelect <- iris %>%
dplyr::select(-Sepal.Length,-Sepal.Width)
##选取列,结果为向量
irisPull <- iris %>%
dplyr::pull(Sepal.Length)
##选取组内top,top_n按选取字段倒序排列
irisOrder <- iris %>%
dplyr::group_by(Species) %>%
dplyr::top_n(2,Sepal.Length)
3、过滤逻辑判断
4、列操作
##新增列(保留原数据框列),也可以用base包直接$新列
irisVec <- iris %>%
dplyr::mutate(newCol = Sepal.Length * Sepal.Width)
##新增列(不保留原数据框列)
irisVec <- iris %>%
dplyr::transmute(newCol = Sepal.Length * Sepal.Width)
##对所有列进行fun,单位换算的时候常用
irisVec <- iris %>%
dplyr::mutate_if(is.numeric,funs(.*100))
##对选中列进行fun
irisVec <- iris %>%
dplyr::mutate_at(vars(-Species),funs(./100))
##列名变更
irisVec <- iris %>%
dplyr::rename(newColName1 = Species,newColName2 = Sepal.Length)
5、MISC
##NA替换
test1 <- c(1, 2, NA, NA, 5) %>%
dplyr::coalesce(0)
6、行合并
#行合并
a <- data.frame(A= c('a','b','c'),B=c('t','u','v'),C=c('1','2','3'))
b <- data.frame(A= c('c','d'),B=c('v','w'),C=c('3','4'))
##合并
c <- dplyr::bind_rows(a,b)
##取相同行
c <- dplyr::intersect(a,b)
##取不同行
c <- dplyr::setdiff(a,b)
##合并且去重复值
c <- dplyr::union(a,b)