Rのtidyverse活用〜dplyrのsummarize

スポンサーリンク

バイオインフォマティクスの分野では、膨大なデータを扱うことが日常茶飯事です。遺伝子発現データや配列データ、構造データなど、多種多様なデータ形式を効率的に処理するスキルが求められます。その中で、Rのtidyverseパッケージ群は、直感的で強力なデータ操作ツールを提供してくれるため、多くの研究者にとって必須のツールとなっています。

本記事では、tidyverseの中心的なパッケージであるdplyrに含まれるsummarize関数について、基本的な使い方からバイオインフォマティクスに特化した応用例まで解説します。


1. dplyrとsummarizeの基本

dplyrは、tidyverseに含まれるデータ操作パッケージで、データフレームやtibble形式のデータに対して直感的かつ効率的な操作を可能にします。その中でも、summarize関数は、データの要約統計量を計算する際に非常に便利です。

基本構文

summarizeは以下の基本構文で使用します:

library(dplyr)

data %>%
  summarize(new_column = summary_function(column_name))

ここで、

  • data はデータフレームまたはtibbleです。
  • summary_function は集計を行う関数(例:mean, sum, max, min, n など)。
  • new_column は生成される新しい列の名前です。
使用例

以下は、遺伝子発現データを例にした基本的な集計の例です。

# サンプルデータの作成
data <- tibble(
  gene = c("gene1", "gene2", "gene3", "gene1", "gene2", "gene3"),
  expression = c(10, 20, 30, 15, 25, 35),
  sample_group = c("A", "A", "A", "B", "B", "B")
)

# 平均発現量の計算
data_summary <- data %>%
  summarize(mean_expression = mean(expression))

print(data_summary)

出力は以下のようになります:

# A tibble: 1 × 1
  mean_expression
            <dbl>
1            22.5

このように、summarizeを使用して全体の平均発現量を計算できます。


2. グループ化とsummarize

group_by関数と組み合わせることで、グループ単位での集計が可能になります。これにより、異なる条件やサンプルグループごとの統計量を簡単に取得できます。

グループ化の例
# グループごとの平均発現量を計算
data_grouped_summary <- data %>%
  group_by(sample_group) %>%
  summarize(mean_expression = mean(expression),
            sd_expression = sd(expression))

print(data_grouped_summary)

出力:

# A tibble: 2 × 3
  sample_group mean_expression sd_expression
  <chr>                <dbl>          <dbl>
1 A                     20             10
2 B                     25             10

この例では、group_byを使用してsample_groupごとにデータをグループ化し、それぞれのグループの平均と標準偏差を計算しています。


3. 応用:バイオインフォマティクスでのsummarize活用

バイオインフォマティクスの具体的な応用として、遺伝子発現データや変異データを扱う場面での例を紹介します。

応用例1: 遺伝子発現データのフィルタリングと集計

特定の条件を満たす遺伝子群の統計量を取得する場合、filtersummarizeを組み合わせると便利です。

# 条件:発現量が20以上の遺伝子のみ集計
data_filtered_summary <- data %>%
  filter(expression >= 20) %>%
  group_by(sample_group) %>%
  summarize(mean_expression = mean(expression),
            gene_count = n())

print(data_filtered_summary)

出力:

# A tibble: 2 × 3
  sample_group mean_expression gene_count
  <chr>                <dbl>       <int>
1 A                     25              2
2 B                     30              2

この例では、発現量が20以上の遺伝子について、サンプルグループごとの平均発現量と遺伝子数を計算しています。

応用例2: 遺伝子変異データの頻度計算

次に、変異データを扱う例を考えます。

# サンプルの変異データ
data_mutation <- tibble(
  mutation = c("A>T", "C>G", "A>T", "G>A", "C>G", "A>T"),
  sample_group = c("A", "A", "B", "B", "B", "B")
)

# 変異頻度の計算
data_mutation_summary <- data_mutation %>%
  group_by(mutation) %>%
  summarize(frequency = n()) %>%
  arrange(desc(frequency))

print(data_mutation_summary)

出力:

# A tibble: 3 × 2
  mutation frequency
  <chr>       <int>
1 A>T             3
2 C>G             2
3 G>A             1

この例では、変異の種類ごとに頻度を計算し、頻度が高い順に並べ替えています。


4. まとめ

dplyrsummarizeは、基本的な要約統計量の計算から、グループ化やフィルタリングと組み合わせた応用的な集計まで、幅広い用途で活躍します。特にバイオインフォマティクスのような大規模データを扱う分野では、効率的なデータ処理と可読性の高いコードが重要です!!

これからRでバイオインフォマティクスの分析を始めようとする方は、ぜひtidyversedplyrを活用してみてくださいね〜!

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