当前位置:网站首页>tidyverse based on data.table?
tidyverse based on data.table?
2022-08-03 20:42:00 【A Yue 1229】
获取更多R语言知识,请关注公众号:医学和生信笔记
“医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化.主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等.
tidyverse
作为RThe Swiss Army Knife in Linguistic Data Analysis,非常好用,A small downside is that it is slow,data.table
速度快,So their team developed it againdtplyr
,加快运行速度.
But today is another one,基于data.table
的tidyverse
:tidytable
.
使用起来非常简单,Just add one after the original function.
即可!!!
Below is a simple speed comparison of a common operation,It can be seen that the speed has been greatly improved~
安装
# 经典2选1
install.packages("tidytable")
# install.packages("devtools")
devtools::install_github("markfairbanks/tidytable")
一般使用
Just add one after the function.
就可以了!!
library(tidytable)
## Warning: package 'tidytable' was built under R version 4.2.1
##
## Attaching package: 'tidytable'
## The following object is masked from 'package:stats':
##
## dt
df <- data.table(x = 1:3, y = 4:6, z = c("a", "a", "b"))
df %>%
select.(x, y, z) %>%
filter.(x < 4, y > 1) %>%
arrange.(x, y) %>%
mutate.(double_x = x * 2,
x_plus_y = x + y)
## # A tidytable: 3 × 5
## x y z double_x x_plus_y
## <int> <int> <chr> <dbl> <int>
## 1 1 4 a 2 5
## 2 2 5 a 4 7
## 3 3 6 b 6 9
分组汇总
和group_by()
稍有不同,这里需要使用.by =
进行分组汇总.
df %>%
summarize.(avg_x = mean(x),
count = n(),
.by = z) # Grouping summary forms are different
## # A tidytable: 2 × 3
## z avg_x count
## <chr> <dbl> <int>
## 1 a 1.5 2
## 2 b 3 1
每次都要调用:
df <- data.table(x = c("a", "a", "a", "b", "b"))
df %>%
slice.(1:2, .by = x) %>% # .by
mutate.(group_row_num = row_number(), .by = x) # .by
## # A tidytable: 4 × 2
## x group_row_num
## <chr> <int>
## 1 a 1
## 2 a 2
## 3 b 1
## 4 b 2
支持tidyselect
常见的everything()
, starts_with()
, ends_with()
, any_of()
, where()
等都是支持的.
df <- data.table(
a = 1:3,
b1 = 4:6,
b2 = 7:9,
c = c("a", "a", "b")
)
df %>%
select.(a, starts_with("b"))
## # A tidytable: 3 × 3
## a b1 b2
## <int> <int> <int>
## 1 1 4 7
## 2 2 5 8
## 3 3 6 9
df %>%
select.(-a, -starts_with("b"))
## # A tidytable: 3 × 1
## c
## <chr>
## 1 a
## 2 a
## 3 b
可以和.by
连用:
df <- data.table(
a = 1:3,
b = c("a", "a", "b"),
c = c("a", "a", "b")
)
df %>%
summarize.(avg_a = mean(a),
.by = where(is.character))
## # A tidytable: 2 × 3
## b c avg_a
## <chr> <chr> <dbl>
## 1 a a 1.5
## 2 b b 3
支持data.table语法
借助dt()
函数实现对data.table
语法的支持.
df <- data.table(x = 1:3, y = 4:6, z = c("a", "a", "b"))
df %>%
dt(, .(x, y, z)) %>%
dt(x < 4 & y > 1) %>%
dt(order(x, y)) %>%
dt(, double_x := x * 2) %>%
dt(, .(avg_x = mean(x)), by = z)
## # A tidytable: 2 × 2
## z avg_x
## <chr> <dbl>
## 1 a 1.5
## 2 b 3
基本上tidyverse
All functions related to data analysis can be used,A detailed list of supported functions can be found here这里[1]找到.
获取更多R语言知识,请关注公众号:医学和生信笔记
“医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化.主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等.
参考资料
tidytable支持的函数: https://markfairbanks.github.io/tidytable/reference/index.html
边栏推荐
- 博士申请 | 美国明尼苏达大学葛畅教授招收隐私数据管理方向全奖博士/硕士/博后/访问学者...
- 2022 年值得尝试的 7 个 MQTT 客户端工具
- leetcode 268. Missing Numbers (XOR!!)
- Likou 707 - Design Linked List - Linked List
- 15年软件架构师经验总结:在ML领域,初学者踩过的五个坑
- ECCV 2022 | 清华&腾讯AI Lab提出REALY:重新思考3D人脸重建的评估方法
- ESP8266-Arduino编程实例-WS2812驱动
- CLIP论文解读
- 敏捷交付的工程效能治理
- tRNA-m5C转运RNA(tRNA)修饰5-甲基胞嘧啶(m5C)|tRNA修饰m1Am2A (2-methyladenosine)
猜你喜欢
随机推荐
Mapper输出数据中文乱码
解决This application failed to start because no Qt platform plugin could be initialized的办法
华为设备配置VRRP负载分担
汉源高科8光口12电口交换机千兆8光8电12电16电网管型工业以太网交换机
Why BI software can't handle correlation analysis
LeetCode 899. 有序队列
tRNA甲基化偶联3-甲基胞嘧啶(m3C)|tRNA-m3C (3-methylcy- tidine)
Li Mu hands-on learning deep learning V2-BERT fine-tuning and code implementation
ES6解构赋值--数组解构及对象解构
倒计时2天,“文化数字化战略新型基础设施暨文化艺术链生态建设发布会”启幕在即
9月1日起我国给予多哥等16国98%税目产品零关税待遇
模板字符串概述
ES6-箭头函数
leetcode 268. Missing Numbers (XOR!!)
火了十几年的零信任,为啥还不能落地
ES6简介及let、var、const区别
数学之美 第六章——信息的度量和作用
RNA核糖核酸修饰Alexa 568/[email protected] 594/[email prote
charles配置客户端请求全部不走缓存
LeetCode_位数统计_中等_400.第 N 位数字