R~tidyverse: dplyrのcount関数の使い方

スポンサーリンク

バイオインフォマティクスの分野でRを活用する際、tidyverseパッケージはデータ解析や可視化を効率的に行うための強力なツールキットです。その中でも「dplyr」は、データの操作をシンプルかつ直感的に行うことができ、多くの研究者に愛用されています。

この記事では、特にdplyrの「count」関数に注目し、その基本的な使い方から応用的なテクニックまでを解説します。バイオインフォマティクスの具体的なデータ例も交えながら、実践的な利用方法を学んでいきましょう。


dplyr の count 関数の基本

count関数の概要
count関数は、データフレームの指定した列に基づいて値の頻度を数え、新しいデータフレームとして結果を返します。これは、データ内のカテゴリの分布を理解したり、重要な傾向を見つけたりするのに役立ちます。

基本的な構文は以下の通りです。

library(dplyr)

# 構文
data %>%
  count(column_name)

ここで、dataはデータフレーム、column_nameは頻度を集計したい列名を指定します。

基本例:遺伝子データの頻度解析
遺伝子の発現データ(例:RNA-seqデータ)が以下のようにあったとします。

gene_data <- data.frame(
  gene = c("TP53", "BRCA1", "EGFR", "TP53", "BRCA1", "TP53"),
  expression_level = c(12, 15, 8, 20, 25, 30)
)

このデータフレームに含まれる遺伝子名の頻度を数えたい場合、以下のように実行します。

gene_data %>%
  count(gene)

出力結果

    gene n
1  BRCA1 2
2   EGFR 1
3   TP53 3

count関数によって、各遺伝子がデータ内に何回出現しているかが一目でわかります。


count 関数の応用

1. ソート順の変更
デフォルトではcount関数は昇順で結果を返しますが、降順で結果を確認したい場合はsort = TRUEオプションを使います。

gene_data %>%
  count(gene, sort = TRUE)

出力結果

    gene n
1   TP53 3
2  BRCA1 2
3   EGFR 1

これにより、頻度の高い順に結果を確認できます。


2. 複数列での集計
バイオインフォマティクスでは、複数の条件でデータをグループ化して解析したい場合があります。count関数は複数の列を指定して集計することも可能です。

sample_data <- data.frame(
  sample_id = c("S1", "S1", "S2", "S2", "S3", "S3"),
  gene = c("TP53", "BRCA1", "TP53", "EGFR", "BRCA1", "EGFR"),
  expression_level = c(12, 15, 20, 8, 25, 30)
)

sample_data %>%
  count(sample_id, gene, sort = TRUE)

出力結果

  sample_id  gene n
1        S3 BRCA1 1
2        S3  EGFR 1
3        S2  EGFR 1
4        S2  TP53 1
5        S1 BRCA1 1
6        S1  TP53 1

これにより、サンプルIDごとに遺伝子の分布がわかります。


3. 重み付き集計
count関数では、重み(ウェイト)を指定することで、単純な頻度ではなく、重み付けされた値を集計できます。たとえば、各遺伝子の発現レベルを合計する場合は以下のようにします。

gene_data %>%
  count(gene, wt = expression_level)

出力結果

    gene  n
1  BRCA1 40
2   EGFR  8
3   TP53 62

このように、wtオプションで特定の列を指定することで、値の合計を計算できます。


4. パイプラインとの組み合わせ
dplyrの他の関数と組み合わせることで、より柔軟な解析が可能です。たとえば、特定の条件を満たすデータのみを対象に頻度を数える場合:

gene_data %>%
  filter(expression_level > 15) %>%
  count(gene, sort = TRUE)

出力結果

    gene n
1  BRCA1 1
2   TP53 2

ここでは、expression_levelが15より大きい行だけを対象に集計しています。


バイオインフォマティクスにおける応用例

ケーススタディ1: サンプル間の遺伝子発現の分布解析

RNA-seqデータを用いて、サンプルごとの遺伝子発現分布を解析する際、count関数を使用することで効率的にグループ化や頻度解析が行えます。

rna_seq_data <- data.frame(
  sample_id = rep(c("S1", "S2", "S3"), each = 4),
  gene = c("TP53", "BRCA1", "EGFR", "TP53", "TP53", "EGFR", "BRCA1", "TP53", "BRCA1", "BRCA1", "EGFR", "EGFR")
)

rna_seq_data %>%
  count(sample_id, gene, sort = TRUE)

これにより、各サンプルごとに遺伝子の出現頻度を把握できます。


ケーススタディ2: バリアントデータの解析

バイオインフォマティクスでは、変異(バリアント)の解析も重要です。たとえば、特定の遺伝子で見つかった変異の種類とその頻度を解析する場合:

variant_data <- data.frame(
  gene = c("TP53", "TP53", "BRCA1", "EGFR", "TP53", "BRCA1"),
  mutation_type = c("missense", "nonsense", "frameshift", "missense", "missense", "nonsense")
)

variant_data %>%
  count(gene, mutation_type, sort = TRUE)

出力結果

    gene mutation_type n
1   TP53     missense 2
2   TP53     nonsense 1
3  BRCA1     nonsense 1
4  BRCA1    frameshift 1
5   EGFR     missense 1

これにより、遺伝子ごとにどの変異が多いかを視覚化できます。


おわりに

dplyrcount関数は、バイオインフォマティクスにおけるデータ解析において、シンプルで強力なツールです。その基本的な機能だけでなく、応用的な使い方を組み合わせることで、より複雑なデータ解析を効率的に行うことが可能です!!

これからバイオインフォマティクスでRを活用しようと考えている方は、ぜひcount関数をデータ解析の一部として取り入れてみてくださいね〜!

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