データを指定した条件で検証し、その後の解析に役に立つ情報を取得できるパッケージの紹介です。抽出条件は数字だけでなく、文字列でも指定可能です。
パッケージバージョンは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
出力例
・対象データの検証結果をプロットで確認
少しでも、あなたの解析が楽になりますように!!