データフレームから tibble に変換: as_tibble, rownames_to_column

データは、tibble 形式だけで統一できるとスッキリしますが、まだまだ、古いパッケージを利用することも多いと思います。その場合、結果のオブジェクトがデータフレーム形式であることも多いでしょう。

> input_df <- read.delim("input_data.tsv", row.names = 1)
>
> # data.frame 形式のテーブル
> input_df
    Sample1 Sample2
id1       1       4
id2       2       5
id3       3       6

下記のように as_tibble() 関数で、データフレームから tibble に変換できます。tibble は、rownames を持たないため、データフレームの rownames を普通の列 (column) に変換しておく必要があります。その名の通りの関数 rownames_to_column() も準備されています。

> as_tibble(rownames_to_column(input_df, "Id"))
# A tibble: 3 x 3
  Id    Sample1 Sample2
  <chr>   <int>   <int>
1 id1         1       4
2 id2         2       5
3 id3         3       6

複雑なオブジェクトの場合は、rownames_to_column() の前に、as.data.frame() などとしておきます。

> as_tibble(rownames_to_column(as.data.frame(input_df), "Id"))
# A tibble: 3 x 3
  Id    Sample1 Sample2
  <chr>   <int>   <int>
1 id1         1       4
2 id2         2       5
3 id3         3       6

tibble からデータフレームに変換 #

逆に、tibble からデータフレームにする必要があれば、 column_to_rownames() 関数を使います。引数で、どの列を rownames にするか指定します。

> input_data
# A tibble: 3 x 3
  Id    Sample1 Sample2
  <chr>   <dbl>   <dbl>
1 id1         1       4
2 id2         2       5
3 id3         3       6
>
>
> column_to_rownames(input_data, "Id")
    Sample1 Sample2
id1       1       4
id2       2       5
id3       3       6
 

投稿者:

Atsushi Doi

株式会社セルイノベーター、主任研究員。理学博士。山口大学大学院理工学研究科修了。東京大学医科学研究所ヒトゲノム解析センターの特任助手を経て、株式会社GNIに主任研究員として勤務。その後、株式会社セルイノベーターの立ち上げに参加し、現在に至る。専門は、バイオインフォマティクス、おもにシステムバイオロジー。