行番号(名前)をデータフレームに追加する
これまではtibble::rowid_to_column()
を利用してきたが、この処理をもう少し早くする必要が出てきてしらべていたら、dplyr::add_rownames()の存在を知り、速度比較したらあやかったので今後はこれを使うことにする。
library(tidyverse) library(microbenchmark) library(data.table) iris_df <- iris %>% as.data.table() microbenchmark(iris %>% add_rownames(), iris %>% rownames_to_column(), iris_df %>% add_rownames(), iris %>% mutate(id = seq.int(nrow(.))))
Unit: milliseconds expr min lq mean median uq max neval cld iris %>% add_rownames() 1.218453 1.262064 1.416237 1.310582 1.368730 4.750718 100 a iris %>% rownames_to_column() 2.834875 2.919264 3.122361 2.996101 3.133352 5.571955 100 c iris_df %>% add_rownames() 1.384211 1.447833 1.556418 1.512777 1.599620 2.527902 100 a iris %>% mutate(id = seq.int(nrow(.))) 2.348928 2.415761 2.593333 2.479005 2.568303 5.112818 100 b
追記:
dplyr::add_rownames()
はduplicatedとなっており、代わりにtibble::rownames_to_column()
を利用せよというwarningが出てくる。
少し遅いがtibbleの関数を利用するほうが無難という結論。