{tidytable}: 兼具快速和简单的数据处理R包~

学术   2024-05-17 13:04   浙江  
作为{tidyverse}中的经典R包,相信读者们都多少有了解和使用过{dplyr}{tidyr}

{data.table}也在数据处理的速度上脱颖而出。

R包{tidytable}可以说是站在了巨人的肩膀上!既能使用{data.table}的速度,又能使用{dplyr}{tidyr}的函数和语法。

实在完美!

安装并载入R包:

install.packages("tidytable")

library(tidytable)
创建数据mydata:

mydata <- data.table(
  group = c(rep("G1", 3), rep("G2", 4)),
  value = 1:7
)

mydata

还可以将data.frame或者data.table数据转换成tidytable对象:

mydata1 <- as_tidytable(mydata)

mydata1

但是as_tidytable()函数实际使用的不多,因为只要使用{tidytable}中的函数处理数据,输出的对象会自动转换成tidytables。

下面进入正文

使用R包{tidytable}中类似{tidyverse}的函数以及语法,进行数据转换。

如果想选取某一个变量(列):

mydata1 %>%
  select(value)

如果想选取符合某些条件的行 (rows):

mydata1 %>%
  filter(group == "G1")

代码中,使用filter()函数选取了变量group中为G1的行。

假设还想添加新的变量:

mydata1 %>%
  mutate(mean_value = mean(value),
         double_value = value * 2)

上述代码中,使用mutate()函数添加了两个新变量: mean_value 和 double_value。

还可以根据不同亚组,对数据中的变量进行统计描述:

mydata1 %>%
  group_by(group) %>%
  summarize(mean_value = mean(value))

从上面的四个例子可以知道,R包{tidytable}沿用了原{dplyr}的函数以及语法(比如pipe%>%)。

再同时使用多个函数,并使用%>%连接:

mydata1 %>%
  filter(group == "G2") %>%
  mutate(mean_value = mean(value), double_value = value * 2) %>%
  arrange(desc(double_value)) %>%
  select(-value)

一串函数使用起来也很丝滑!

最后假设需要将两个数据拼接起来,先创建一个新数据mydata2:

mydata2 <-
  data.table(group = c("G1", "G3"),
             label = c("A", "B")) %>%
  as_tidytable()

mydata2

再将两个数据拼接起来,使用inner_join()

mydata_co <- inner_join(mydata1, mydata2, by = "group")

mydata_co

数据就拼接好了!除了上面代码中用到的inner_join()外,大家可以自己试试看其它joins函数,比如left_join(), right_join(), full_join()

感兴趣的读者可以看看往期关于{data.table}{dplyr}{tidyr}内容:

{data.table}:我是一个能和{dplyr}平起平坐的...包!
{data.table}速度到底有多快? 
顶尖研究者每天都在用!如何拼接数据集?送你超级实用的四招! 
实用!这几个函数让长宽数据的转换变得无比丝滑~

好啦,今天的内容就到这里。如果有帮助,记得分享给需要的人


参考文献

[1]. https://markfairbanks.github.io/tidytable/

公众号的线上课程
1. 《R语言和统计新手课程》
2. 《回归:从入门到进阶》
3. 《线性混合模型和纵向数据分析》
【通过公众号菜单栏--线上课程】

统计咨询
《服务介绍和经典合作案例》

公众号核心成员的成果发表
《SCI医学1区影响因子9分论文》

公众号核心成员担任SCI杂志Associate Editor!
《JAD杂志Associate editor》
《Frontiers in Neuroscience, Frontiers in Neurology and Frontiers in Psychiatry杂志的神经退行性病变板块》

加入我们
成为我们的课程推广大使,赢取高额回报!
【通过公众号菜单栏--联系我们--招推广员】

▌本文由R语言和统计首发
▌课程相关咨询可添加R师妹微信: kefu_rstats
▌编辑:June
▌邮箱:contact@rstats.cn
▌网站:www.rstats.cn
我们致力于让R语言和统计变得简单!




R语言和统计
我们定期更新与R有关的内容,比如R编程基础,作图,实用R包的解读,统计学基础知识,前沿的统计方法,机器学习等等。
 最新文章