最新!R的4.4.0版本发布!是时候停用{dplyr}了?

学术   科学   2024-05-06 12:12   浙江  
一般来说,载入的R包越少越好,除非这个R包不可替代。

前几天R推出了最新版本,为4.4.0版本。

其中添加了一个函数sort_by(),对于数据清理来说非常有帮助,这个函数有挑战{dplyr}包中的arrange()函数的潜力。

举个例子予以说明。

将使用iris数据集,查看概况:

summary(iris)

再查看数据的前10行: 

head(iris, 10)

下一步,使用最新的sort_by()函数对第一个变量进行排序:

sort_by(iris, iris$Sepal.Length)

上述的结果仅显示前10行。对比上面的两个结果可知,上述代码将按照第一个变量进行从小到大的排序。

也可以对多个变量进行排序,这里以两个为例,代码如下:

sort_by(iris, list(iris$Species, iris$Sepal.Length))

R将返回所有行数,上述仅为一部分。上述的代码先对Species排序,之后对Sepal.Length进行排序。 

下面,列出两段代码,一个为R自带函数,另外一个为使用{dplyr}的函数,用于处理数据清理工作。

各位可以通过下方代码来比较两种方法。

首先为R自带函数,代码如下:

iris |>
  sort_by(~ list(Species, Petal.Width)) |>
  subset(Sepal.Length > 5) |>
  subset(select = c(Species, Sepal.Length, Petal.Width)) |>
  transform(new_variable = log(Petal.Width)) |>
  aggregate(. ~ Species, FUN = mean, data = _)

第二段代码使用{dplyr}相关代码: 

install.packages("dplyr") # 安装R包
library(dplyr)
# 载入

iris %>%
  arrange(Species, Petal.Width) %>%
  filter(Sepal.Length > 5) %>%
  select(Species, Sepal.Length, Petal.Width) %>%
  mutate(new_variable = log(Petal.Width)) %>%
  group_by(Species) %>%
  summarise(mean_Sepal.Length = mean(Sepal.Length),
            mean_Petal.Width = mean(Petal.Width),
            mean_new_variable = mean(new_variable))

不同的代码,结果是一样的。

关于如何选择,各位自己做决定

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


公众号的线上课程
1. 《R语言和统计新手课程》
2. 《回归:从入门到进阶》
【通过公众号菜单栏--线上课程--新手课程/回归课程】

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

公众号核心成员的成果发表
《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包的解读,统计学基础知识,前沿的统计方法,机器学习等等。
 最新文章