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

Rの解析に役に立つ記事

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

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

パッケージバージョンは2.18.0.1。windows11のR version 4.2.2で確認しています。

スポンサーリンク
スポンサーリンク

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

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

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

実行コマンド

19のコマンドを紹介します。詳細はコメントまたはパッケージヘルプを確認してください。

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

#####準備#####################
#データ例の作成
set.seed(1234)
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    NA  <NA>    NA  <NA>
2   Test2    NA  <NA>    NA  <NA>
3   Test3     2     B    NA  <NA>
#####省略#####
17 Test17    NA  <NA>     1     A
18 Test18    NA  <NA>    NA     B
19 Test19    NA  <NA>    NA     B
20 Test20    NA  <NA>    NA     C

##4
#数列にラベルを付与して因子化:caseコマンド
#指定した値以外はNAになります
TestData1[, 2]
[1] NA NA  2  2  1 NA  3  1  1  2
case(TestData1[, 2], "a" = 1, "b" = 2)
[1] <NA> <NA> b    b    a    <NA> <NA> a    a    b   
Levels: a b

##5
#data.frameやmatirixのデータ内容を維持して結合:cbindX
#cbindXコマンド:データ内容が維持され結合できます
cbindX(TestData1[1:5, 1:2], TestData2)
   Group Data1  Group Data2 Text2
1  Test1    NA Test11     2     C
2  Test2    NA Test12     2  <NA>
#####省略#####
9   <NA>    NA Test19    NA     B
10  <NA>    NA Test20    NA     C

##6
#コンソールの中央にテキストを表示:centerTextコマンド
centerText("からだにいいもの")

##7
#データの結合元名がわかるように結合:combineコマンド
#nameオプション:source名を指定,初期値;NULL
combine(TestData1[, 2], TestData2[, 2], names = c("TEST1", "TEST2"))
  data source
1    NA  TEST1
2    NA  TEST1
#####省略#####
19   NA  TEST2
20   NA  TEST2

##8
#使用されていない因子levelを削除:drop.levelsコマンド
#元のデータ
factor(TestData1[3:6, 1],
       levels = c("Test3", "Test4", "Test5",
                  "Test6", "Test8"))
[1] Test3 Test4 Test5 Test6
Levels: Test3 Test4 Test5 Test6 Test8
#コマンドを適応
drop.levels(factor(TestData1[3:6, 1],
                   levels = c("Test3", "Test4", "Test5",
                              "Test6", "Test8")))
[1] Test3 Test4 Test5 Test6
Levels: Test3 Test4 Test5 Test6

##9
#因子のラベルと順番を確認:mapLevelsコマンド
mapLevels(TestData1[3:6, 1])
Test3 Test4 Test5 Test6 
1     2     3     4 

##10
#重複データ位置の確認:duplicated2コマンド
#元データ
TestData1[, 3]
[1] NA  NA  "B" "C" "B" "B" "B" "C" "B" NA 
#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)
  Group Data1 Text1
#1 Test1    NA  <NA>
#最後を表示:lastコマンド
last(TestData1)
   Group Data1 Text1
#10 Test10     2  <NA>

##12
#データフレームの行を指定して処理を実行:frameApplyコマンド
#byオプション:対象行を指定
frameApply(TestData1, by = c("Group", "Data1"))
    Group Data1 Count
1   Test1    NA     1
10 Test10     2     1
#####省略#####
8   Test8     1     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,] NA      "2"     "1"     "3"     "1"     
[3,] NA      "B"     "B"     "B"     "B"     
[4,] "Test2" "Test4" "Test6" "Test8" "Test10"
[5,] NA      "2"     NA      "1"     "2"     
[6,] NA      "C"     "B"     "C"     NA

##14
#マトリックス,データフレームの表示行を指定:left(左側),right(右側)コマンド
#共通nオプション:左または右端から表示する行数を指定
#左から指定:leftコマンド
left(cbind(TestData1, TestData1), n = 4)
    Group Data1 Text1 Group.1
1   Test1    NA  <NA>   Test1
2   Test2    NA  <NA>   Test2
#####省略#####
9   Test9     1     B   Test9
10 Test10     2  <NA>  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] NA NA  2  2  1 NA  3  1  1  2
#NAの位置を確認
isUnknown(TestData1[, 2], unknown = NA)
[1]  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE

##17
#指定した内容をNAに置換:unknownToNAコマンド
#元データ
TestData1[, 2]
[1] NA NA  2  2  1 NA  3  1  1  2
#1をNAに置換,unknownオプションで値を指定
unknownToNA(TestData1[, 2], unknown = 1)
[1] NA NA  2  2 NA NA  3 NA NA  2

##18
#NAを除いた組み合わせ数を表示:nPairsコマンド
#元データ
    Group Data1 Text1
1   Test1    NA  <NA>
2   Test2    NA  <NA>
3   Test3     2     B
4   Test4     2     C
5   Test5     1     B
6   Test6    NA     B
7   Test7     3     B
8   Test8     1     C
9   Test9     1     B
10 Test10     2  <NA>
  
#nPairsコマンドを実行
#allは行毎のNAを除いたデータ数
nPairs(x = TestData1, margin = TRUE)
     Grop Dat1 Txt1 all
Grop   10    7    7  10
Dat1    7    7    6   7
Txt1    7    6    7   6
attr(,"class")
[1] "nPairs" "matrix" "array" 

##19
#三角行列上部または下部データ操作:upperTriangle,lowerTriangleコマンド
#nPairsコマンドとの組み合わせ
#上部データを取得
upperTriangle(nPairs(x = TestData1))
[1] 7 7 6
#上部データを変更,"<-"で値を変更
x <- nPairs(x = TestData1)
upperTriangle(x) <- c(9, 10, 11)
#表示
x
     Grop Dat1 Txt1
Grop   10    9   10
Dat1    7    7   11
Txt1    7    6    7
attr(,"class")
[1] "nPairs" "matrix" "array" 

#下部データを取得
#lowerTriangle(nPairs(x = TestData1))

少しでも、あなたの解析が楽になりますように!!

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