如何按median列唯一值批量提取dataframe对应的所有数值
实现方案
方法1:基础R实现(无需额外安装依赖包)
# 1. 按median列拆分数据,仅保留sample开头的样本列 split_res <- split(df[, grepl("^sample", colnames(df))], f = df$median) # 2. 将每个分组的样本值转为一维向量,并重命名列表元素 res <- lapply(split_res, function(x) unlist(x, use.names = F)) names(res) <- paste0("median", names(res)) # 如需按示例格式输出,运行下方代码即可 invisible(lapply(names(res), function(k) { cat(k, "\n") print(res[[k]]) cat("\n") }))
运行后直接通过res$median2、res$median5即可调用对应分组的数值向量。
方法2:tidyverse实现(更适合大型数据集,处理效率更高)
library(dplyr) library(tidyr) res <- df %>% # 样本列转为长格式 pivot_longer(starts_with("sample"), values_to = "val") %>% # 按median分组汇总样本值 group_by(median) %>% summarise(val_list = list(val)) %>% # 转为命名列表并修改名称 deframe() %>% setNames(paste0("median", names(.)))
使用方法与基础R方案一致。
内容的提问来源于stack exchange,提问作者Mike de Groot
相关产品推荐
相关产品推荐

