バイオインフォマティクスでは、大量のデータを効率的に処理し、解析することが求められます。そのために、R の tidyverse パッケージ群が強力なツールとなります。特に、dplyr
パッケージを活用すると、データのフィルタリング、集計、変換、並べ替えが簡単に行えます。
本記事では、dplyr
の arrange()
関数に焦点を当て、基本的な使い方から応用テクニックまで詳しく解説します。バイオインフォマティクスにおけるデータ解析で、どのように arrange()
を活用できるかを考えながら学んでいきましょう。
1. arrange() の基本
1.1 arrange() の基本構文
arrange()
は、データフレームの行を指定した列の値に基づいて並べ替える関数です。
arrange(.data, ...)
.data
:データフレーム(または tibble)...
:並べ替えに使用する列(複数指定可)
1.2 昇順での並べ替え
arrange()
を使うと、デフォルトで 昇順(ascending order) に並べ替えられます。
例:バイオインフォマティクスの遺伝子データを並べ替える
library(tidyverse)
# サンプルデータ(遺伝子発現量データ)
gene_data <- tibble(
gene = c("BRCA1", "TP53", "MYC", "EGFR", "PTEN"),
expression = c(12.5, 8.3, 15.2, 10.1, 5.7)
)
# 発現量を昇順で並べ替え
gene_data %>% arrange(expression)
出力
# A tibble: 5 × 2
gene expression
<chr> <dbl>
1 PTEN 5.7
2 TP53 8.3
3 EGFR 10.1
4 BRCA1 12.5
5 MYC 15.2
発現量 (expression
) の小さい順に並べ替えられました。
2. desc() を使った降順ソート
発現量の高い遺伝子を優先的に表示したい場合、降順(descending order) でソートする必要があります。そのためには、desc()
を使用します。
gene_data %>% arrange(desc(expression))
出力
# A tibble: 5 × 2
gene expression
<chr> <dbl>
1 MYC 15.2
2 BRCA1 12.5
3 EGFR 10.1
4 TP53 8.3
5 PTEN 5.7
このように、desc(expression)
を指定すると、発現量の大きい遺伝子が上位に表示されます。
3. 複数の列で並べ替える
arrange()
は複数の列を指定できます。例えば、複数の条件を持つデータを並べ替える場合に便利です。
例:複数の条件でソート
# サンプルデータ
gene_data_extended <- tibble(
gene = c("BRCA1", "TP53", "MYC", "EGFR", "PTEN", "BRCA1", "TP53"),
sample = c("A", "A", "A", "A", "B", "B", "B"),
expression = c(12.5, 8.3, 15.2, 10.1, 9.8, 14.3, 7.2)
)
# サンプルごとに遺伝子発現量の降順で並べ替え
gene_data_extended %>% arrange(sample, desc(expression))
出力
# A tibble: 7 × 3
gene sample expression
<chr> <chr> <dbl>
1 MYC A 15.2
2 BRCA1 A 12.5
3 EGFR A 10.1
4 TP53 A 8.3
5 BRCA1 B 14.3
6 PTEN B 9.8
7 TP53 B 7.2
sample
列を昇順(A → B)で並べ替えた後、各サンプル内でexpression
を降順にソートしています。
4. arrange() を活用した応用テクニック
4.1 NA の処理
バイオインフォマティクスのデータでは、NA
(欠損値)が含まれることがよくあります。arrange()
では、NA
はデフォルトで最後に配置されます。
gene_data_na <- tibble(
gene = c("BRCA1", "TP53", "MYC", "EGFR", "PTEN"),
expression = c(12.5, 8.3, NA, 10.1, 5.7)
)
# NA を含むデータを並べ替え
gene_data_na %>% arrange(expression)
出力
# A tibble: 5 × 2
gene expression
<chr> <dbl>
1 PTEN 5.7
2 TP53 8.3
3 EGFR 10.1
4 BRCA1 12.5
5 MYC NA
NA
を先に持ってきたい場合は、is.na()
を活用して以下のように処理できます。
gene_data_na %>% arrange(desc(is.na(expression)), expression)
5. バイオインフォマティクスの実践例
バイオインフォマティクスでは、大量の遺伝子発現データやサンプル情報を処理する必要があります。例えば、RNA-seq のデータ解析で、発現量の高い遺伝子を優先的に解析したい場合、arrange()
を使って並べ替えることで、効率的にデータを抽出できます。
例:Top 10 遺伝子を取得
gene_data %>% arrange(desc(expression)) %>% head(10)
このように head(10)
を組み合わせることで、発現量の高い 10 個の遺伝子を取得できます。
まとめ
arrange()
はシンプルながら強力な関数であり、データの並べ替えを直感的に行えます。特に、バイオインフォマティクスの分野では、遺伝子発現データやサンプル情報を扱う際に頻繁に使用されます!!
ポイントのおさらい
- 基本の並べ替え:
arrange(df, column)
- 降順ソート:
arrange(df, desc(column))
- 複数の条件で並べ替え:
arrange(df, column1, desc(column2))
- NA の処理:
arrange(df, desc(is.na(column)), column)
tidyverse の力を活用して、効率的にデータ解析を進めましょう〜!