R tidyverse の活用: 累積最大値を計算する「cummax()」の使い方

スポンサーリンク

バイオインフォマティクスでは、大量のデータを扱う機会が多く、効率的なデータ操作が求められます。R の tidyverse は、そのようなデータ処理を直感的かつ簡潔に記述できる強力なツールキットです。特に dplyr パッケージは、データのフィルタリング、集計、変換を行う上で非常に役立ちます。

この記事では、dplyr の関数 cummax() に焦点を当て、その基本的な操作方法をバイオインフォマティクスのデータ解析に応用する方法を解説します。


cummax() とは?

関数の概要

cummax() は、累積最大値(cumulative maximum) を計算する関数です。これは、ベクトルやデータフレーム内の数値に対して、現在の位置までの最大値を保持しながら新しいデータを追加する という動作を行います。

例えば、以下のような数列があったとします:

x <- c(3, 1, 4, 1, 5, 9, 2, 6)

この数列に対して cummax(x) を適用すると、次のような結果が得られます:

cummax(x)
# [1] 3 3 4 4 5 9 9 9

これは、「それまでに登場した最大値」を各要素に適用した結果です。


cummax() の基本操作

1. ベクトルに適用

まずは、基本的なベクトルに cummax() を適用する例を見てみましょう。

library(dplyr)

# 数値ベクトル
vec <- c(2, 7, 1, 8, 2, 8, 1, 8)
cummax(vec)

出力結果

[1] 2 7 7 8 8 8 8 8

ここでは、最初の 2 から始まり、7 に更新され、それ以降はその時点での最大値を更新しながら処理されます。


2. データフレームに適用

バイオインフォマティクスのデータ解析では、データフレームの各列に対して処理を適用するケースが多くなります。例えば、ある遺伝子の発現データが時間ごとに記録されている場合、cummax() を使うと、「これまでの時間の中での最大発現量」を求めることができます。

例:遺伝子発現データの累積最大値

# サンプルデータフレーム
df <- tibble(
  time = 1:8,
  gene_exp = c(2.3, 3.1, 1.8, 4.5, 3.9, 5.2, 4.8, 6.1)
)

# `cummax()` を適用
df <- df %>%
  mutate(cummax_exp = cummax(gene_exp))

# 結果を表示
print(df)

出力結果

# A tibble: 8 × 3
   time gene_exp cummax_exp
   <int>    <dbl>      <dbl>
1     1      2.3        2.3
2     2      3.1        3.1
3     3      1.8        3.1
4     4      4.5        4.5
5     5      3.9        4.5
6     6      5.2        5.2
7     7      4.8        5.2
8     8      6.1        6.1

このように、累積最大値を求めることで、時間経過とともに発現量がどのように変化しているかがわかります。


3. グループごとに累積最大値を計算

group_by() を併用すると、異なるグループ(例えば異なる患者や異なる条件下での測定データ)ごとに累積最大値を求めることができます。

例:異なる遺伝子グループごとの累積最大発現量

# サンプルデータ(異なる遺伝子の発現データ)
df_grouped <- tibble(
  time = rep(1:6, 2),
  gene = rep(c("GeneA", "GeneB"), each = 6),
  expression = c(1.2, 2.5, 3.0, 2.8, 3.5, 4.1,
                 0.8, 1.5, 2.2, 2.0, 2.6, 3.3)
)

# `cummax()` をグループごとに適用
df_grouped <- df_grouped %>%
  group_by(gene) %>%
  mutate(cummax_exp = cummax(expression))

# 結果を表示
print(df_grouped)

出力結果

# A tibble: 12 × 4
# Groups:   gene [2]
   time gene  expression cummax_exp
   <int> <chr>      <dbl>      <dbl>
1     1 GeneA       1.2        1.2
2     2 GeneA       2.5        2.5
3     3 GeneA       3.0        3.0
4     4 GeneA       2.8        3.0
5     5 GeneA       3.5        3.5
6     6 GeneA       4.1        4.1
7     1 GeneB       0.8        0.8
8     2 GeneB       1.5        1.5
9     3 GeneB       2.2        2.2
10    4 GeneB       2.0        2.2
11    5 GeneB       2.6        2.6
12    6 GeneB       3.3        3.3

このように、group_by(gene) を使うことで、遺伝子ごとの発現データに対して cummax() を適用できます。


cummax() のバイオインフォマティクスでの応用

cummax() は、バイオインフォマティクスのデータ解析において以下のような用途に役立ちます:

  1. 遺伝子発現データの最大値のトラッキング
    • 各時点までの最大発現量を把握することで、特定の遺伝子のピーク値を把握できます。
  2. タンパク質や分子濃度データの解析
    • 累積最大値を求めることで、どの時点で最大濃度に達したのかを調査できます。
  3. ゲノム変異データの解析
    • 突然変異の回数が累積的にどのように増加しているかを可視化できます。

まとめ

dplyrcummax() は、累積最大値を簡単に計算できる便利な関数です。特に、バイオインフォマティクスのデータ解析において、遺伝子発現データやタンパク質濃度の推移を分析する際に役立ちます!!

ぜひ、自身のデータに応用して、より深い解析に挑戦してみてくださいね〜!

タイトルとURLをコピーしました