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&#12434;&#22522;&#28310;&#12395;&#26332;&#26085;&#12434;&#20837;&#25163;:wday&#12467;&#12510;&#12531;&#12489;
         Day_Type = lubridate::wday(Date, label = TRUE, abbr = FALSE,
                                    locale = "English_Japan.932")) %>%
  #Saturday,Sunday&#12434;WEEKEND,&#12381;&#12398;&#20182;&#12434;WEEKDAY&#12395;&#22793;&#25563;
  mutate(Day_Type = if_else((Day_Type == "Saturday"| Day_Type == "Sunday"),
                            "WEEKEND", "WEEKDAY"))
########

#&#12487;&#12540;&#12479;&#12398;&#26908;&#35388;&#26465;&#20214;&#12434;&#25351;&#23450;:validator&#12467;&#12510;&#12531;&#12489;
TestRules <- validator(Date > "2021-12-01",
                       Data_1 >= 15,
                       Day_Type == "WEEKDAY")

#&#12487;&#12540;&#12479;&#12434;&#26908;&#35388;:confront&#12467;&#12510;&#12531;&#12489;
#validator&#12467;&#12510;&#12531;&#12489;&#12398;&#32080;&#26524;&#12434;&#25351;&#23450;&#12377;&#12427;
GetData <- confront(dat = TestData, x = TestRules)

##&#23550;&#35937;&#12487;&#12540;&#12479;&#12398;&#26908;&#35388;&#12398;&#35201;&#32004;
#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"

##&#23550;&#35937;&#12487;&#12540;&#12479;&#12398;&#26908;&#35388;&#32080;&#26524;&#12434;&#12503;&#12525;&#12483;&#12488;&#12391;&#30906;&#35469;
#plot(GetData)

#&#26908;&#35388;&#26465;&#20214;&#12395;&#21512;&#12431;&#12394;&#12356;&#12487;&#12540;&#12479;&#12434;&#21462;&#24471;:violating&#12467;&#12510;&#12531;&#12489;
#&#26368;&#24460;&#12398;&#26908;&#35388;&#26465;&#20214;&#12399;&#36969;&#24540;&#12373;&#12428;&#12394;&#12356;
GetNotData <- violating(TestData, y = TestRules)

##&#30906;&#35469;
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をコピーしました