Rで解析:データ要約の処理時間が速い!「bigtabulate」パッケージ
公開日: Rとアクセス解析に役に立つ記事 効率化
data.frameやmatrixの要約はtableやsplit,listコマンドを組み合わせることで可能ですが、本パッケージは処理の高速化とメモリ利用の効率化が考えられています。
10,000,000 * 3のデータの処理時間をtableコマンドと比較すると約2.8倍速いです。
パッケージバージョンは1.1.4。実行コマンドはR version 3.2.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール install.packages("bigtabulate")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み library("bigtabulate") ###データ例の作成##### n <- 10 TestData <- data.frame(Group = sample(paste0("Group", 1:3), n, replace = TRUE), Data1 = sample(1:5, n, replace = TRUE), Data2 = sample(11:15, n, replace = TRUE)) ######## #データ内容の確認 TestData Group Data1 Data2 1 Group2 3 11 2 Group1 4 12 3 Group1 2 14 4 Group2 4 13 5 Group1 2 11 6 Group3 3 13 7 Group1 4 13 8 Group1 3 14 9 Group3 2 11 10 Group3 4 15 ######## #データからテーブルを作成:bigtable #対象データ列と区分データ列の指定:ccolsオプション #ccol = (対象データ列, 区分データ列) BTData <- bigtable(TestData, ccols = c(2, 1)) #classの確認 class(BTData) [1] "matrix" #内容の確認 BTData 1 2 3 2 2 0 1 3 1 1 1 4 2 1 1 #基本コマンドで再現:tableコマンド TData <- table(TestData[, 2], TestData[, 1]) #classの確認 class(TData) [1] "table" #内容の確認 TData Group1 Group2 Group3 2 2 0 1 3 1 1 1 4 2 1 1 #データの組み合わせの位置を検出:bigsplitコマンド BSData <- bigsplit(TestData, ccols = c(2, 1)) #該当する結果がなければnumeric(0)が返される BSData $`2:1` [1] 3 5 $`3:1` [1] 8 $`4:1` [1] 2 7 $`2:2` numeric(0) #以下省略 #基本コマンドで再現:splitコマンド split(TestData[,1], list(Data1 = factor(TestData[,2]), Data2 = TestData[,1])) $`2.Group1` [1] Group1 Group1 Levels: Group1 Group2 Group3 $`3.Group1` [1] Group1 Levels: Group1 Group2 Group3 $`4.Group1` [1] Group1 Group1 Levels: Group1 Group2 Group3 $`2.Group2` factor(0) Levels: Group1 Group2 Group3 #以下省略 ###参考,n = 10,000,000のデータ処理時間 n <- 10000000 BigData <- data.frame(Group = sample(paste0("Group", 1:3), n, replace = TRUE), Data1 = sample(1:5, n, replace = TRUE), Data2 = sample(11:15, n, replace = TRUE)) #bigtableコマンド system.time(BTData <- bigtable(BigData, ccols = c(2, 1))) ユーザ システム 経過 1.101 0.039 1.144 #tableコマンド system.time(TData <- table(BigData[, 2], BigData[, 1])) ユーザ システム 経過 2.808 0.164 2.978
少しでも、あなたのウェブや実験の解析が楽になりますように!!
関連記事
-
-
Rとウェブ解析:コード可読性向上!「%>%」(パイプ)でつなげるmagrittrパッケージ
Rでは変数へのデータを代入する方法として「%」(パイプ)でコードをつなげることで、可読性が向上するの
-
-
Rでお遊び:シャーロット第11話「シャーロット」感想と色使い
OPで示されていた謎のキーワードや軌道図の意味が「明らか」となった回でした。もう、残された伏線はほと
-
-
Rでインタラクティブなネットワーク図:networkD3パッケージの紹介
ネットワーク図をインタラクティブに操作できる「networkD3」を紹介します。使えそうなパッケージ
-
-
Rで遺伝子網羅解析:PubMedのエビデンスを利用して抽出
マイクロアレイで発現変動を示した遺伝子の中からPubMedから入手したエビデンスリストに含まれる遺伝
-
-
Rでお遊び:いつかは役に立つかも?オーストラリア大陸をプロットする「oz」パッケージの紹介
オーストラリア大陸に興味がある方へオススメしたい、オーストラリア大陸のプロットに特化した「oz」パッ