r - 在一个单元格中选择最小值或最大值(分隔字符串)
问题描述
我有一个数据框,其中每个样本的列可以有多个值,例如:
Gene Pvalue1 Pvalue2 Pvalue3 Beta
Ace 0.0381, ., 0.00357 0.01755, 0.001385 0.0037, NA , 0.039 -0.03,1,15
NOS NA 0.02 0.001, 0.00067 0.00009,25,30
我想在每一列中应用min()
每个max()
基因的数据(我总共有数千个基因),并获得 pvalues 的最小值,但对于 beta 等列的最大值。所以输出数据看起来像这样:
Gene Pvalue1 Pvalue2 Pvalue3 Beta
Ace 0.00357 0.001385 0.0037 15
NOS NA 0.02 0.00067 30
我是 R 新手,不确定我要问的内容是否可行,如果一个单元格中有多个值,它们是否被视为字符串?
解决方案
Another option is using data.table and matrixstats:
library(data.table)
library(matrixStats)
pval_cols <- grep("Pvalue", names(DT), fixed = TRUE, value = TRUE)
min_fun <- function(x) {
y <- tstrsplit(x, split = ",", fixed = TRUE)
y <- rowMins(sapply(y, as.numeric), na.rm = TRUE)
y <- replace(y, !is.finite(y), NA)
return(y)
}
DT[, (pval_cols) := lapply(.SD, min_fun)
, .SDcols = pval_cols][]
which gives:
> DT Gene Pvalue1 Pvalue2 Pvalue3 Beta 1: Ace 0.00357 0.001385 0.00370 -0.03,1,15 2: NOS NA 0.020000 0.00067 0.00009,25,30
For the Beta
-column(s) you can create a similar max_fun
: just replace rowMins
with rowMaxs
.
推荐阅读
- swift - 屏幕之间的 MacOS 转换
- jenkins - Jenkins“警告下一代插件”无法解析 Pytest 的 JUnit xml 报告
- objective-c - 在目标 c 中使用 NSURLSessionDataTask 显示文件下载进度时出错
- ruby-on-rails - 从调用函数的位置获取源代码/从回溯获取最后一个函数
- c++ - 如何将抽象类的派生类作为参数传递?
- powershell - nics相关的路由
- typescript - 基于类类型的打字稿返回类型
- firebase-cloud-messaging - 从 Pushwoosh 迁移到 FCM
- ruby-on-rails - 出于什么原因我应该将课程设为私有?
- sql - Power BI:如何在给定字段值的表中选择数据