Rで解析:列名行名でデータを結合「flipTables」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

列や行方向,列名行名で結合するコマンドにはrbindやcbind,mergeがありますが、共通・非共通・全てを結合する場合には列名行名やデータサイズが異なる場合には工夫が必要です。

そんな工夫も必要なく、上記作業を手軽に実施できるパッケージの紹介です。Rの初心者だけでなく、玄人にもオススメです。

本パッケージの対象データはmatrixまたはarrayそしてvectorですが、data.frameの場合は一度「as.matrix」コマンドで変換後に操作することで操作が可能かと思います。

パッケージバージョンは2.9.6。実行コマンドはR version 4.2.2で確認しています。

スポンサーリンク

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

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

#パッケージのインストール
install.packages("devtools")
devtools::install_github("NumbersInternational/flipTables")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

[code language="R"]
#パッケージの読み込み
library("flipTables")

###データ例の作成#####
#Data1の作成
Data1 <- matrix(1:16, nrow = 4, ncol = 4)
#行列名の付与
dimnames(Data1) <- list(c("あ", "い", "う", "え"), c("a", "b", "c", "d"))
#確認
Data1
   a b  c  d
あ 1 5  9 132 6 10 143 7 11 154 8 12 16
#Data2の作成
Data2 <- matrix(17:31, nrow = 5, ncol = 3)
#行列名の付与
dimnames(Data2) <- list(c("い", "か", "う", "き", "く"), c("b", "e", "c"))
#確認
Data2
  b  e  c
い 17 22 2718 23 2819 24 2920 25 3021 26 31
########

#結合コマンド:MergeTablesコマンド
#列名で判断:joinbyオプション;"Join rows"(行名の判断;"Join columns")
#条件:nonmatchingオプション;共通"Matching only"
MergeTables(Data1, Data2, joinby = "Join rows", nonmatching = "Matching only")
   b  c
あ    5  9
い.x  6 10
う.x  7 118 12
い.y 17 2718 28
う.y 19 2920 3021 31

#条件:nonmatchingオプション;1番目のデータを優先"Keep all from first table"
MergeTables(Data1, Data2, joinby = "Join rows", nonmatching = "Keep all from first table")
   a  b  c  d
あ    1  5  9 13
い.x  2  6 10 14
う.x  3  7 11 154  8 12 16
い.y NA 17 27 NA
か   NA 18 28 NA
う.y NA 19 29 NA
き   NA 20 30 NA
く   NA 21 31 NA

#条件:nonmatchingオプション;2番目のデータを優先"Keep all from second table"
MergeTables(Data1, Data2, joinby = "Join rows", nonmatching = "Keep all from second table")
   b  c  e
あ    5  9 NA
い.x  6 10 NA
う.x  7 11 NA
え    8 12 NA
い.y 17 27 2218 28 23
う.y 19 29 2420 30 2521 31 26

#条件:nonmatchingオプション;全てを結合"Keep all"
MergeTables(Data1, Data2, joinby = "Join rows", nonmatching = "Keep all")
   a  b  c  d  e
あ    1  5  9 13 NA
い.x  2  6 10 14 NA
う.x  3  7 11 15 NA
え    4  8 12 16 NA
い.y NA 17 27 NA 22
か   NA 18 28 NA 23
う.y NA 19 29 NA 24
き   NA 20 30 NA 25
く   NA 21 31 NA 26
[/code]

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

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