ITPub博客

首页 > > > tidyfst对标dplyr 1.0.0的列函数:select/rename/relocate

tidyfst对标dplyr 1.0.0的列函数:select/rename/relocate

作者:浪花小雨滴 时间:2020-04-13 11:11:31 0 删除 编辑

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言数据高效处理指南》。知乎专栏:R语言数据挖掘。邮箱:huang.tian-yuan@qq.com.欢迎合作交流。


dplyr 1.0.0版本的相关推文dplyr 1.0.0: select, rename, relocate - Tidyverse中介绍了其新的特性,tidyfst的功能基本会跟其持平。这个博客中包含了列的选择、重命名和排序,还是比较实用,代码如下:

library(pacman)
p_load(tidyfst,tibble)

df2 <- tibble(x1 = 1, x2 = "a", x3 = 2, y1 = "b", y2 = 3, y3 = "c", y4 = 4)
df2 %>% select_dt(is.numeric)
#>       x1    x3    y2    y4
#>    <num> <num> <num> <num>
#> 1:     1     2     3     4
df2 %>% select_dt(!is.character)
#>       x1    x3    y2    y4
#>    <num> <num> <num> <num>
#> 1:     1     2     3     4
df2 %>% select_dt("^x") %>% select_dt(is.numeric)
#>       x1    x3
#>    <num> <num>
#> 1:     1     2
df2 %>% setNames(toupper(names(df2)))
#> # A tibble: 1 x 7
#>      X1 X2       X3 Y1       Y2 Y3       Y4
#>   <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl>
#> 1     1 a         2 b         3 c         4


df3 <- tibble(w = 0, x = 1, y = "a", z = "b")
df3 %>% relocate_dt(y, z)
#>         y      z     w     x
#>    <char> <char> <num> <num>
#> 1:      a      b     0     1
df3 %>% relocate_dt(is.character)
#>         y      z     w     x
#>    <char> <char> <num> <num>
#> 1:      a      b     0     1

df3 %>% relocate_dt(w, how = "after",where = y)
#>        x      y     w      z
#>    <num> <char> <num> <char>
#> 1:     1      a     0      b
df3 %>% relocate_dt(w, how = "before", where = y)
#>        x     w      y      z
#>    <num> <num> <char> <char>
#> 1:     1     0      a      b
df3 %>% relocate_dt(w, how = "last")
#>        x      y      z     w
#>    <num> <char> <char> <num>
#> 1:     1      a      b     0

这里我们可以看到:

1、tidyfst可以直接对tibble对象进行操作。

2、tidyfst的选择函数select_dt其实比dplyr更加灵活,详见:HopeR:为什么你要使用tidyfst的select_dt。

3、tidyfst中,如果要选择数值型、同时以“x”开头的变量,那么请选择两次,而不是在一个里面做复杂的选择。tidyfst基本思想是把简单的操作拼接合成复杂操作,尽量不直接提供复杂的复合操作,除非需求非常广泛。

4、tidyfst的relocate_dt函数与dplyr的relocate函数能够实现的功能一致,但是API是不同的。我做了how和where两个参数,希望能够更加直观。一定要显式调用,也就是如果你不是把内容提到最前面(默认方法“first”),那么一定要声明how和where。

5、tidyfst的更名函数只能与以前一致,就是新名称换旧名称。举例,“rename_dt(DT, a = b)”让DT数据框的b列更名为a。如果需要更多功能,配合基本包setNames和data.table的setnames基本也能让你无所不能。tidyfst的功能还是要做基本,不延伸细枝末节,除非需要非常广泛。

后面会持续更新两者操作的对比。

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39941