R成精-用dplyr高效变换数据和处理数据

dplyr包介绍

dplyr包是R大神大杰作,Hadley Wickham,被称为一个改变R的人,dplyr是在plyr上升级的又一力作。
dplyr包包含了数据整理、筛选、变换、汇总等多种函数。基本上可以解决数据处理的80%的问题。

基础用法

本文以自己构造的数据集进行演示,以便方便理解。

data1 <- data.frame(id=c(1:10),class=c(15:6),score=c("十","九","八","七","六","五","四","三","二","一"),ennum=c("one","two","three","four","five","ten","nine","eight","seven","six"),type=c("a","b"))
data2 <- rbind(data1,c(10,6,"一","six","b"))
  1. 单表操作
  • 排序 arrange 对变量进行排序,默认为升序,可以用desc()降序排列.
data1 %>% arrange()
data1 %>% arrange(desc(id))
data1 %>% arrange(by=class)
  • 去重distinct,相当于base函数的unique,该函数有一个.keep_all的参数,如果等于FALSE,输出去重的变量。如果等于TRUE,输出全部变量,有多个相同的观测数据,输出第一条数据。
data2 %>% distinct()
data2 %>% distinct(type)
 type
1    a
2    b
data2 %>% distinct(type,.keep_all=TRUE)
id class score ennum type
1  1    15    十   one    a
2  2    14    九   two    b
  • do
  • 条件筛选filter,根据条件变量筛选观察值。
    常用的筛选条件
==, >, >= etc

&, |, !, xor()

is.na()

between(), near()
data2 %>%filter(id==10)
id class score ennum type
1 10     6    一   six    b
2 10     6    一   six    b

等价于

data2[id==10,]
  • group_by ungroup
  • mutate transmute
  • select rename
  • current_vars
    -starts_with end_with
  • contains matches
  • num_range one_of
  • everything
  • sample_n sample_frac
  • summarise summarize
  • 拉取一列变量pull
    pull(data,var=-1)
    data是数据集,var为空时默认拉取最后一列,var为正时从左边开始的列,var为负数从右边开始的列。
  • 根据位置选取观测值slice
    slice(data1,10:n())
    选取十行以后的数据
  1. 两个表操作
  2. 向量函数
    between
    case_when
    coalesce
    cumull cumany cumean
    desc
    if_else
    lead lag
    order_by
    n
    n_distinct
    na_if
    near
    nth first last
    row_number ntitle
    min_rank dense_rank
    percent_rank cum_dist
    recode recode_factor
  3. 元数据
    groups``groups_vars
  4. 数据集
    dplyr 包中包含乐队成员信息,NASA的空间数据,星际争霸人物特征,和风暴数据:
    band_instruments、band_instruments2 、band_members 、nasa 、starwars、storms

扩展用法

参考

官方参考

你可能感兴趣的:(R成精-用dplyr高效变换数据和处理数据)