作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(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的功能还是要做基本,不延伸细枝末节,除非需要非常广泛。
后面会持续更新两者操作的对比。
原文作者:;如有侵权,请联系管理员删除。