【问题标题】:How to sum values using R based on the same row ID?如何使用 R 基于相同的行 ID 对值求和?
【发布时间】:2021-01-18 14:22:46
【问题描述】:

我是 R 编程语言的新手。我想知道是否有人可以帮助我解决以下问题。

  1. 我想总结“meta-TMT126”、“meta-TMT-127”等列中的所有值,如果这些行与数据框 1 中的基因名称相同。
  2. 将求和值放入 data.frame 2。
  3. 使用 X 值
  4. 使用以下等式 (Y=Bmax*X/(Kd + X)) 拟合曲线。
  5. 在 data.frame 2 的“Kd”列下列出每个基因的计算 Kd 值。

任何帮助将不胜感激。谢谢!

data.frame 1

No. Gene.Names meta.TMT126 meta.TMT127 meta.TMT128 meta.TMT129 meta.TMT131
11     CAMKK1    4072.936    9365.860    6849.890    8984.916    33329.95
12     CAMKK2       0.000    7274.314   11176.810   13428.840    23818.98
13     CAMKK2       0.000    2454.801   10336.700   14725.970    25393.29
14     CAMKK2       0.000    4632.481    7781.803   14236.950    17768.02
15     CAMKK2       0.000       0.000    9480.014   10525.650    16477.76
16       CDK1    7261.509   26724.260   31849.710   40430.470    49057.77
17       CDK1   11742.330   37562.090   62257.240   78345.980    78888.45
18       CDK1  110574.600  446760.000  451618.600  682500.800   567461.70
19       CDK1   36139.930   90902.490  178966.500  179064.500   167970.90
20       CDK1   10228.790   30630.880   45064.910   57638.250    60941.82
21       CDK1    3073.708    7608.870   11477.470   13113.130    16976.54
22       CDK1    5731.526   17815.080   23776.330   27493.160    20506.58
23       CDK1   14520.820   47537.810   75062.160   73013.450    92172.52
24       CDK1    9606.591   33498.880   43764.630   52139.970    49417.85
25       CDK1    5312.566   16361.420   26155.710   28099.830    32235.76
26       CDK1    2724.090    6696.917   10923.450   10441.160    13494.35
27       CDK1    3178.791    9800.487   16621.160   17990.620    20878.94
28       CDK1    1676.843    2900.603    5489.261    7645.588    35765.65

data.frame 2

    Gene.name Summed.TMT126 Summed.TMT127 Summed.TMT128 Summed.TMT129 Summed.TMT130 Summed.TMT131 Kd
8     CAMKK1            NA            NA            NA            NA            NA            NA NA
9     CAMKK2            NA            NA            NA            NA            NA            NA NA
10      CDK1            NA            NA            NA            NA            NA            NA NA

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可以从base R使用aggregate

    df2 <-  aggregate(. ~ Gene.Names, df1, sum, na.rm = TRUE)
    

    并使用matplot进行绘图

    matplot(t(df2[-1]),  type = 'l')
    

    如果我们想要单独的图,请在使用tidyverse 重塑为“长”格式后使用facet_wrap

    library(dplyr)
    library(tidyr)
    library(ggplot2)
    df2 %>%
        pivot_longer(cols = -Gene.Names) %>% 
        group_by(Gene.Names) %>%
        mutate(rn = row_number()) %>%
       ggplot(aes(x = rn, y = value, color = Gene.Names)) +
          geom_line() + 
          facet_wrap(~ Gene.Names)
    

    【讨论】:

    • 感谢您的回答!聚合函数有效。有没有一种简单的方法可以覆盖预先存在的数据框但不创建新的数据框?您的绘图代码会将所有内容都绘制在同一张图中,但我更喜欢将每个基因绘制在单独的图中。你知道怎么做吗?谢谢!
    • @Chemistlearnstocode 您可以将原始数据集更新为df1 &lt;- aggregate(. ~ Gene.Names, df1, sum, na.rm = TRUE),但随后它将汇总输出数据集。如果要单独绘制,可以使用for 循环或ggplot
    • @Chemistlearnstocode 更新了代码。请检查
    • 太棒了!非常感谢你的帮助!还有一个问题:是否可以将 x 轴值更改为指定值,例如 ac(0.25, 0.5, 1, 2, 5, 10),并自动调整 Y 轴刻度以匹配 Y 值,而不是对所有地块使用相同的比例。谢谢!
    • 我添加了一个中断,现在它可以工作了。非常感谢您的帮助!
    猜你喜欢
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多