Rで解析:データのハンドリング作業を効率化!「gdata」パッケージの紹介


解析の重要な作業としてデータのハンドリングがあります。本パッケージではデータの結合、文字列、因子、NA値の操作が手軽にできます。これらの操作はRの基本コマンドでも可能ですが、初心者には面倒なこともあります。まずは、本パッケージでデータのハンドリングをしつつ、基本コマンドを学習してみてはいかがでしょうか。

パッケージから日常的に使用頻度が高そうな19のコマンドを紹介します。
本パッケージの各コマンドhelpにはSee Alsoに基本コマンドが紹介されています。ぜひ、活用ください。

パッケージバージョンは2.17.0。R version 3.2.0でコマンドを確認しています。


パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("gdata")

実行コマンドの紹介

19のコマンドを紹介します。詳細はコメントまたはパッケージヘルプを確認してください。なお、データ例はコマンド実行のたびに内容が変わります。

#ライブラリの読み込み
library("gdata")

#####準備#####################
#データ例の作成
i <- 10 TestData1 <- data.frame(Group = paste0("Test", 1:i), Data1 = I(sample(c(1:3, NA), i, replace = TRUE)), Text1 = I(sample(c(LETTERS[1:3], NA), i, replace = TRUE))) TestData2 <- data.frame(Group = paste0("Test", 11:(10 + i)), Data2 = I(sample(c(1:3, NA), i, replace = TRUE)), Text2 = I(sample(c(LETTERS[1:3], NA), i, replace = TRUE))) ############################## ##1 #Rで最後に実行した結果を表示:ansコマンド ans() ##2 #コマンドのデフォルト値を表示:Argコマンド Args("data.frame") ##3 #2つのdata.frameを基準行で結合:bindDataコマンド #commonオプションで指定した行以外の行を横に結合 bindData(TestData1, TestData2, common = c("Group")) Group Data1 Text1 Data2 Text2 1 Test1 3 B NA <NA> 2 Test2 3 B NA <NA> 3 Test3 2 A NA <NA> #####省略##### 17 Test17 NA <NA> 1 C 18 Test18 NA <NA> 2 B 19 Test19 NA <NA> NA A 20 Test20 NA <NA> NA <NA> ##4 #数列にラベルを付与して因子化:caseコマンド #指定した値以外はNAになります TestData1[, 2] [1] 3 3 2 NA 2 NA 2 2 1 1 case(TestData1[, 2], "a" = 1, "b" = 2) [1] <NA> <NA> b <NA> b <NA> b b a a Levels: a b ##5 #data.frameやmatirixのデータ内容を維持して結合:cbindX #cbindXコマンド:データ内容が維持され結合できます cbindX(TestData1[1:5, 1:2], TestData2)   Group Data1 Group Data2 Text2 1 Test1 3 Test11 2 C 2 Test2 3 Test12 2 C #####省略##### 9 <NA> NA Test19 NA A 10 <NA> NA Test20 NA <NA> ##6 #コンソールの中央になるよう結果を表示:centerTextコマンド centerText(TestData1[, 3]) ##7 #データの結合元名がわかるように結合:combineコマンド #nameオプション:source名を指定,初期値;NULL combine(TestData1[, 2], TestData2[, 2], names = c("TEST1", "TEST2")) data source 1 3 TEST1 2 3 TEST1 #####省略##### 19 NA TEST2 20 NA TEST2 ##8 #使用されていない因子levelを削除:drop.levels #元のデータ TestData1[3:6, 1] [1] Test3 Test4 Test5 Test6 Levels: Test1 Test10 Test2 Test3 Test4 Test5 Test6 Test7 Test8 Test9 #コマンドを適応 drop.levels(TestData1[3:6, 1]) [1] Test3 Test4 Test5 Test6 Levels: Test3 Test4 Test5 Test6 ##9 #因子のラベルと順番を確認:mapLevelsコマンド mapLevels(TestData1[3:6, 1]) Test1 Test10 Test2 Test3 Test4 Test5 Test6 Test7 Test8 Test9  1 2 3 4 5 6 7 8 9 10 ##10 #重複データ位置の確認:duplicated2コマンド #元データ TestData1[, 3] [1] "B" "B" "A" "A" "A" NA "C" NA NA "A" #R付属(base)のduplicatedコマンド #2回目出現がTRUE duplicated(TestData1[, 3]) [1] FALSE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE #duplicated2コマンド #重複データは全てTRUE duplicated2(TestData1[, 3]) [1] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE ##11 #データの最初,最後を表示:first,lastコマンド #最初を表示:firstコマンド first(TestData1, n = 1) Group Data1 Text1 1 Test1 3 B #最後を表示:lastコマンド last(TestData1, n = 1) Group Data1 Text1 10 Test10 1 A ##12 #データフレームの行を指定して処理を実行:frameApplyコマンド #byオプション:対象行を指定 frameApply(TestData1, by = c("Group", "Data1")) Group Data1 Count 1 Test1 3 1 10 Test10 1 1 #####省略##### 8 Test8 2 1 9 Test9 1 1 ##13 #データを1列ごとに結合:interleaveコマンド #interleaveコマンド interleave(matrix(TestData1[, 1], 2), matrix(TestData1[, 2], 2), matrix(TestData1[, 3], 2)) [,1] [,2] [,3] [,4] [,5] [1,] "Test1" "Test3" "Test5" "Test7" "Test9" [2,] "3" "2" "2" "2" "1" [3,] "B" "A" "A" "C" NA [4,] "Test2" "Test4" "Test6" "Test8" "Test10" [5,] "3" NA NA "2" "1" [6,] "B" "A" NA NA "A" ##14 #マトリックス,データフレームの表示行を指定:left(左側),right(右側)コマンド #共通nオプション:左または右端から表示する行数を指定 #左から指定:leftコマンド left(cbind(TestData1, TestData1), n = 4) Group Data1 Text1 Group.1 1 Test1 3 B Test1 2 Test2 3 B Test2 #####省略##### 9 Test9 1 <NA> Test9 10 Test10 1 A Test10 ##15 #NAを除いたベクトルの長さを表示:nodsコマンド #元データ Tnode <- c(NA, 2, 2, 1, NA) #R付属(base)のlengthコマンド length(Tnode) [1] 5 #nodeコマンド nobs(Tnode) [1] 3 ##16 #指定した内容の位置を取得:isUnknownコマンド #位置はTRUEで返されます #元データ TestData1[, 2] [1] 3 3 2 NA 2 NA 2 2 1 1 #NAの位置を確認 isUnknown(TestData1[, 2], unknown = NA) [1] FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE ##17 #指定した内容をNAに置換:unknownToNAコマンド #元データ TestData1[, 2] [1] 3 3 2 NA 2 NA 2 2 1 1 #1をNAに置換,unknownオプションで値を指定 unknownToNA(TestData1[, 2], unknown = 1) [1] 3 3 2 NA 2 NA 2 2 NA NA ##18 #NAを除いた組み合わせ数を表示:nPairsコマンド #元データ TestData1   Group Data1 Text1 1 Test1 NA A 2 Test2 2 A 3 Test3 2 <NA> 4 Test4 2 <NA> 5 Test5 1 <NA> 6 Test6 1 C 7 Test7 NA A 8 Test8 2 B 9 Test9 1 C 10 Test10 1 A #コマンドを実行 #allは行毎のNAを除いたデータ数 nPairs(x = TestData1, margin = TRUE)    Grop Dat1 Txt1 all Grop 10 8 7 10 Dat1 8 8 5 8 Txt1 7 5 7 5 attr(,"class") [1] "nPairs" "matrix" ##19 #三角行列上部または下部データ操作:upperTriangle,lowerTriangleコマンド #nPairsコマンドとの組み合わせ #上部データを取得 upperTriangle(nPairs(x = TestData1)) [1] 8 7 5 #上部データを変更,"<-"で値を変更 x <- nPairs(x = TestData1) upperTriangle(x) <- c(9, 10, 11) Grop Dat1 Txt1 Grop 10 9 10 Dat1 8 8 11 Txt1 7 5 7 attr(,"class") [1] "nPairs" "matrix" #下部データを取得 #lowerTriangle(nPairs(x = TestData1)) [/code]


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

関連コンテンツ


スポンサードリンク