dfirr

A Note on R How-to in Cybersecurity Investigation

複数データフレームから指定列の星取表を作る

複数のログを分析しているとき、特定のフィールド(たとえばIPアドレス)がどのログに出現しているのかを一覧したいことがあります。簡単な例を作ると、

logA <- tibble(src_ip = c("192.168.1.3", "192.168.1.1", "192.168.1.2"))
logB <- tibble(src_ip = c("192.168.1.5", "192.168.1.3", "192.168.1.4", "192.168.1.5"))
logC <- tibble(src_ip = c("192.168.1.2", "192.168.1.5", "192.168.1.6"))

というデータフレーム群があったとき、

## # A tibble: 6 × 4
##   src_ip      logA  logB  logC 
##   <chr>       <lgl> <lgl> <lgl>
## 1 192.168.1.1 TRUE  FALSE FALSE
## 2 192.168.1.2 TRUE  FALSE TRUE 
## 3 192.168.1.3 TRUE  TRUE  FALSE
## 4 192.168.1.4 FALSE TRUE  FALSE
## 5 192.168.1.5 FALSE TRUE  TRUE 
## 6 192.168.1.6 FALSE FALSE TRUE

のような結果を得たいとします。今回は、このための関数づくりを通して、curly-curlyを使う技法を紹介します。

RPubs「複数データフレームから指定列の星取表を作る」