Rで解析:複数条件の欠損値の取り扱いに便利!「declared」パッケージ


欠損値の条件を複数管理するのに便利なパッケージの紹介です。コマンド例ではベクトルでの紹介がほとんどですが、データフレームを対象に設定も可能です。

また、「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 ... 欠損値


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

スポンサードリンク

スポンサードリンク