Rで解析:データを指定した条件で検証「validate」パッケージ

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

データを指定した条件で検証し、その後の解析に役に立つ情報を取得できるパッケージの紹介です。抽出条件は数字だけでなく、文字列でも指定可能です。

パッケージバージョンは1.1.1。実行コマンドはwindows 11のR version 4.1.3で確認しています。

スポンサーリンク

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

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

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

実行コマンド

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

#パッケージの読み込み
library("validate")

###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
#日付データの作成に便利:lubridateパッケージがなければインストール
if(!require("lubridate", quietly = TRUE)){
  install.packages("lubridate");require("lubridate")
}
set.seed(1234)
#lubridate::ymd;locale="C", tz="Asia/Tokyo"を設定するのがポイント
#lubridate::wday;locale = "English_Japan.932"を設定するのがポイント
TestData <- tibble(Date = seq(lubridate::ymd("2021-01-01", locale = "C",
                                             tz = "Asia/Tokyo"),
                              lubridate::ymd("2022-03-24", locale = "C",
                                             tz = "Asia/Tokyo"),
                              by = "1 day")) %>%
  mutate(Data_1 = sample(c(1:30), length(Date), replace = TRUE),
         Data_2 = sample(c(1:30), length(Date), replace = TRUE),
         Char_Data = sample(c("A", "B", "NO"), length(Date), replace = TRUE),
         #Dateを基準に曜日を入手:wdayコマンド
         Day_Type = lubridate::wday(Date, label = TRUE, abbr = FALSE,
                                    locale = "English_Japan.932")) %>%
  #Saturday,SundayをWEEKEND,その他をWEEKDAYに変換
  mutate(Day_Type = if_else((Day_Type == "Saturday"| Day_Type == "Sunday"),
                            "WEEKEND", "WEEKDAY"))
########

#データの検証条件を指定:validatorコマンド
TestRules <- validator(Date > "2021-12-01",
                       Data_1 >= 15,
                       Day_Type == "WEEKDAY")

#データを検証:confrontコマンド
#validatorコマンドの結果を指定する
GetData <- confront(dat = TestData, x = TestRules)

##対象データの検証の要約
#summary(GetData)
#  name items passes fails nNA error warning            expression
#1   V1   448    113   335   0 FALSE   FALSE   Date > "2021-12-01"
#2   V2   448    247   201   0 FALSE   FALSE Data_1 - 15 >= -1e-08
#3   V3   448    448     0   0 FALSE   FALSE Day_Type == "WEEKDAY"

##対象データの検証結果をプロットで確認
#plot(GetData)

#検証条件に合わないデータを取得:violatingコマンド
#最後の検証条件は適応されない
GetNotData <- violating(TestData, y = TestRules)

##確認
GetNotData
# A tibble: 382 x 5
#  Date                Data_1 Data_2 Char_Data Day_Type
#  <dttm>               <int>  <int> <chr>     <chr>   
#1 2021-01-01 00:00:00     28     14 B         WEEKDAY 
#2 2021-01-02 00:00:00     16      9 NO        WEEKDAY 
#3 2021-01-03 00:00:00     26     19 NO        WEEKDAY 
#4 2021-01-04 00:00:00     22      1 B         WEEKDAY 
#5 2021-01-05 00:00:00      5      4 NO        WEEKDAY 
#6 2021-01-06 00:00:00     12     24 NO        WEEKDAY 
#7 2021-01-07 00:00:00     15     14 B         WEEKDAY 
#8 2021-01-08 00:00:00      9     10 A         WEEKDAY 
#9 2021-01-09 00:00:00      5     24 B         WEEKDAY 
#10 2021-01-10 00:00:00      6     13 NO        WEEKDAY 
# ... with 372 more rows

出力例

・対象データの検証結果をプロットで確認


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

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