R tidyverse:指定した列の値の並べ替え 「arrange」 の使い方

スポンサーリンク

バイオインフォマティクスでは、大量のデータを効率的に処理し、解析することが求められます。そのために、R の tidyverse パッケージ群が強力なツールとなります。特に、dplyr パッケージを活用すると、データのフィルタリング、集計、変換、並べ替えが簡単に行えます。

本記事では、dplyrarrange() 関数に焦点を当て、基本的な使い方から応用テクニックまで詳しく解説します。バイオインフォマティクスにおけるデータ解析で、どのように 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() はシンプルながら強力な関数であり、データの並べ替えを直感的に行えます。特に、バイオインフォマティクスの分野では、遺伝子発現データやサンプル情報を扱う際に頻繁に使用されます!!

ポイントのおさらい

  1. 基本の並べ替えarrange(df, column)
  2. 降順ソートarrange(df, desc(column))
  3. 複数の条件で並べ替えarrange(df, column1, desc(column2))
  4. NA の処理arrange(df, desc(is.na(column)), column)

tidyverse の力を活用して、効率的にデータ解析を進めましょう〜!

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