【问题标题】:How to find the maximum x value for each column and report the corresponding y value?如何找到每列的最大 x 值并报告相应的 y 值?
【发布时间】:2022-07-27 22:21:10
【问题描述】:

使用 R.Studio 我有一张来自数百个样本的 DNA 大小分布图的原始数据表。 对于每个具有相同大小(x 值)的样本,RFU(y 值)按列排列在单独的列中 - 见下文。

Size distribution graph example for visualisation

示例数据:(组成值只是为了显示表格的格式)

sample001_rfu sample002_rfu sample003_rfu size_bp
5678 4567 3456 1000
8901 7890 6789 5000
10234 10123 10010 10000
12356 12345 11234 15000
15678 14567 13445 20000
13890 16589 15624 25000
10987 13425 17245 30000
8902 11323 15428 35000
6513 8919 12879 40000
4178 6528 10256 45000
3213 4380 8621 50000

我正在尝试找到所有样本的最大 y 值 (RFU)(即每列中的最大值)并报告相应的 x 值(大小)将用于下游自动化样品处理计划。

所以,在上表中:

  • sample001 = 20000bp(最大 rfu = 15678)
  • sample002 = 25000bp(最大 rfu = 16589)
  • sample003 = 30000bp(最大 rfu = 17245)

我对一个样本使用了以下方法:

df$size_bp[which.max(df$sample001_rfu)] 

但是,如果不手动替换上面代码中的示例 ID,我似乎无法找到一个解决方案来为表中的每个 sample_rfu(列)重复此操作。 然后,我想将这些值及其样本 ID(列标题)存储为一个列表,稍后将与不同的处理阈值进行比较。

任何建议将不胜感激!

【问题讨论】:

    标签: r loops max


    【解决方案1】:

    基础 $

    dat$size_bp[ sapply(dat[,-4], which.max) ]
    # [1] 20000 25000 30000
    

    dplyr

    library(dplyr)
    dat %>%
      summarize(across(-size_bp, ~ size_bp[which.max(.)]))
    #   sample001_rfu sample002_rfu sample003_rfu
    # 1         20000         25000         30000
    

    数据

    dat <- structure(list(sample001_rfu = c(5678L, 8901L, 10234L, 12356L, 15678L, 13890L, 10987L, 8902L, 6513L, 4178L, 3213L), sample002_rfu = c(4567L, 7890L, 10123L, 12345L, 14567L, 16589L, 13425L, 11323L, 8919L, 6528L, 4380L), sample003_rfu = c(3456L, 6789L, 10010L, 11234L, 13445L, 15624L, 17245L, 15428L, 12879L, 10256L, 8621L), size_bp = c(1000L, 5000L, 10000L, 15000L, 20000L, 25000L, 30000L, 35000L, 40000L, 45000L, 50000L)), class = "data.frame", row.names = c(NA, -11L))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 2023-01-14
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      相关资源
      最近更新 更多