欠損値の条件を複数管理するのに便利なパッケージの紹介です。コマンド例ではベクトルでの紹介がほとんどですが、データフレームを対象に設定も可能です。
また、「labelled」パッケージを使用する必要がありますが、指定した欠損値のラベルを含めたベクトルへの変換などにも対応しています。
パッケージバージョンは0.8。windows11のR version 4.1.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール install.packages("declared")
実行コマンド
詳細はコメント、コマンドヘルプを確認してください。
#パッケージの読み込み library("declared") #tidyverseパッケージを読み込み #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } #labelledパッケージを読み込み #labelledパッケージがなければインストール if(!require("labelled", quietly = TRUE)){ install.packages("labelled");require("labelled") } #欠損値の詳細設定:declaredコマンド #欠損値のラベル設定:labelsオプション #欠損値の指定:na_valueオプション MissVec <- declared(x = c(1:5, 20:30, 99, 55), labels = c(欠損値 = 99, Missing = 55, Range = c(20, 25)), na_value = c(99, 55), na_range = c(20, 25)) #確認 MissVec <declared<integer>[18]> [1] 1 2 3 4 5 NA(20) NA(21) NA(22) NA(23) NA(24) [11] NA(25) 26 27 28 29 30 NA(99) NA(55) Missing values: 99, 55 Missing range: [20, 25] Labels: value label 99 欠損値 55 Missing 20 Range1 25 Range2 ###作成したMissVecの操作##### #平均を算出 mean(MissVec) [1] 15.5 #mean(c(1:5, 20:30, 99, 55)):[1] 24.66667 #MissVecの内容は以下のベクトルと同じ #mean(c(1:5, NA, NA, NA, NA, NA, NA, # 26:30, NA, NA), na.rm = TRUE):[1] 15.5 #欠損値を確認 is.na(MissVec) [1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE [12] FALSE FALSE FALSE FALSE FALSE TRUE TRUE #数値の位置を確認 MissVec == 20 [1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE [12] FALSE FALSE FALSE FALSE FALSE FALSE FALSE #データフレーム化 tibble(Group = paste0("Group", 1:length(MissVec)), MissVec) # A tibble: 18 x 2 Group MissVec <chr> <int+lbl> 1 Group1 1 2 Group2 2 3 Group3 3 4 Group4 4 5 Group5 5 6 Group6 20 (NA) [Range1] 7 Group7 21 (NA) 8 Group8 22 (NA) 9 Group9 23 (NA) 10 Group10 24 (NA) 11 Group11 25 (NA) [Range2] 12 Group12 26 13 Group13 27 14 Group14 28 15 Group15 29 16 Group16 30 17 Group17 99 (NA) [欠損値] 18 Group18 55 (NA) [Missing] ###labelledパッケージを利用##### #ラベル内容含めて文字列化 to_character(MissVec) [1] "1" "2" "3" "4" "5" "Range1" "21" [8] "22" "23" "24" "Range2" "26" "27" "28" [15] "29" "30" "欠損値" "Missing" #ラベル内容含めて因子化 to_factor(MissVec) [1] 1 2 3 4 5 Range1 21 22 [9] 23 24 Range2 26 27 28 29 30 [17] 欠損値 Missing 18 Levels: 1 2 3 4 5 Range1 21 22 23 24 Range2 26 27 28 29 30 ... 欠損値
少しでも、あなたの解析が楽になりますように!!