首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >group_by()和split()函数的运用

group_by()和split()函数的运用

原创
作者头像
sheldor没耳朵
发布2024-11-15 10:28:35
发布2024-11-15 10:28:35
4470
举报
文章被收录于专栏:R基础R基础

group_by()和split()函数的运用

考虑下面一种情形,要根据 "drug" 列中的相同值提取出对应的 "molecules",并将 "molecules" 对应的值按每个 "drug" 分组,可以使用 dplyr包中的 group_by()和 summarize()函数,或者直接使用 split()函数来达到目的

方法一:

代码语言:r
复制
library(dplyr)
# 使用 group_by() 和 summarize() 创建每个 drug 对应的 molecules 列表
result <- network %>%
  group_by(drug) %>%
  summarize(molecules_list = list(molecules))
# 查看结果
head(result)

方法二:

代码语言:r
复制
# 使用 split() 按照 drug 列分组
result <- split(network$molecules, network$drug)

# 查看结果
head(result)

输出结果

代码语言:r
复制
$`Rehmanniae Radix Praeparata`
[1] "MOL000359" "MOL000449"

$`Cornus Officinalis Sieb. Et Zucc.`
[1] "MOL000359" "MOL000449" "MOL005531"

$`Poria Cocos(Schw.) Wolf.`
[1] "MOL000273"
...

那如果我们不只想要molecules的值,而是要每个drug对应的数据框呢?用着两种方法也能实现

方法一:

代码语言:r
复制
# 使用 group_by() 和 group_split() 创建每个 drug 对应的数据框
result_list <- network %>%
  group_by(drug) %>%
  group_split()

# 为每个数据框命名,使用 drug 列中的药物名称
names(result_list) <- unique(network$drug)

# 查看第一个药物对应的数据框
head(result_list[[1]])

方法二:

代码语言:r
复制
# 使用 split() 按照 drug 列分组并生成数据框列表
result_list <- split(network, network$drug)

# 为每个数据框命名,使用 drug 列中的药物名称
names(result_list) <- unique(network$drug)

# 查看第一个药物对应的数据框
head(result_list[[1]])

输出结果

代码语言:r
复制
无论使用哪种方法,result_list 都是一个列表,每个元素是一个数据框,代表一个特定药物的所有记录。
result_list[[1]]:第一个药物的数据框
result_list[[2]]:第二个药物的数据框
以此类推...

可以通过药物名直接访问相应的数据框。例如,如果想访问 Rehmanniae Radix Praeparata的数据框:

代码语言:r
复制
result_list[["Rehmanniae Radix Praeparata"]]

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • group_by()和split()函数的运用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档