Rで解析:data.frameにラベルを付与!「labelled」パッケージ


SPSSやSASなどはデータセットにラベルを付与して作業できます。意外にこの機能は便利ですがRでの再現は工夫が必要でした。工夫もなく、簡単にデータセットにラベルを付与できるパッケージを紹介します。

ラベルを付与することで、作業が格段に効率よくなることがあります。ぜひ、パッケージを試してみてください。

パッケージバージョンは0.1.2。実行コマンドはwindows 7およびOS X 10.11.2のR version 3.2.3で確認しています。


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

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

#パッケージのインストール
install.packages("devtools")
devtools::install_github("larmarange/labelled")

実行コマンド

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

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

###データ例の作成#####
n <- 50
TestData <- data.frame(Data1 = sample(1:5, n, replace = TRUE),
                       Data2 = I(sample(LETTERS[1:3], n, replace = TRUE)))
#構造確認
str(TestData)
'data.frame':   50 obs. of  2 variables:
$ Data1: int  2 3 2 1 1 4 1 4 4 2 ...
$ Data2:Class 'AsIs'  chr [1:50] "A" "C" "B" "A" ...
########

#変数ラベルを付与:var_labelコマンド
var_label(TestData[, 1]) <- "Question_1"
#構造確認
#label属性が新たに付与されます
str(TestData)
'data.frame':   50 obs. of  2 variables:
$ Data1: atomic  2 3 2 1 1 4 1 4 4 2 ...
..- attr(*, "label")= chr "Question_1"
$ Data2:Class 'AsIs'  chr [1:50] "A" "C" "B" "A" ...
#RStudioでViewコマンドで表示すると
#データ名下部に変数ラベルが表示されます
View(TestData)

#値にラベルを付与:labelledコマンド
#注意:numeric,characterのみ対象です
#ラベル内容を指定:labelsオプション
TestData[, 2] <- labelled(TestData[, 2],
                          labels = c(YES = "A", NO = "B", OR = "C"))
#構造確認
#Data2にラベル属性が付与されいます
str(TestData)
'data.frame':   50 obs. of  2 variables:
$ Data1: atomic  2 3 2 1 1 4 1 4 4 2 ...
..- attr(*, "label")= chr "Question_1"
$ Data2:Class 'labelled'  atomic [1:50] A C B A ...
.. ..- attr(*, "labels")= Named chr [1:3] "A" "B" "C"
.. .. ..- attr(*, "names")= chr [1:3] "YES" "NO" "OR"
.. ..- attr(*, "is_na")= logi [1:3] FALSE FALSE FALSE
#内容表示
TestData[, 2]
<Labelled character>
[1] "A" "C" "B" "A" "C" "C" "B" "C" "C" "A" "B" "A" "B" "B" "A" "A" "A" "C" "C" "A" "B"
[22] "A" "C" "A" "A" "C" "B" "C" "A" "A" "A" "C" "B" "C" "C" "A" "C" "B" "B" "A" "C" "B"
[43] "A" "C" "B" "A" "B" "B" "B" "A"
Labels:
value label is_na
A     YES   FALSE
B     NO    FALSE
C     OR    FALSE

#ラベル属性を変更する:val_labelコマンド
#情報削除はNULLを指定
val_label(TestData[, 2], "C") <- "CHANGE"
#内容表示
TestData[, 2]
<Labelled character>
[1] "A" "C" "B" "A" "C" "C" "B" "C" "C" "A" "B" "A" "B" "B" "A" "A" "A" "C" "C" "A" "B"
[22] "A" "C" "A" "A" "C" "B" "C" "A" "A" "A" "C" "B" "C" "C" "A" "C" "B" "B" "A" "C" "B"
[43] "A" "C" "B" "A" "B" "B" "B" "A"

Labels:
value  label  is_na
A      YES    FALSE
B      NO     FALSE
C      CHANGE FALSE

#特定の値を欠損値とする:missing_valコマンド
#オリジナルデータの確認
summary(TestData)
 Data1         Data2
Min.   :1.00   Length:50
1st Qu.:2.00   Class :labelled
Median :3.50   Mode  :character
Mean   :3.24
3rd Qu.:4.00
Max.   :5.00
#Data1にラベルを付与
TestData[, 1] <- labelled(TestData[, 1],
                          labels = c(YES = 1, NO = 2, OR = 3, MISS = 4, CHANGE = 5))
#Data1の3を欠損値にする
missing_val(TestData[, 1]) <- 3

#missing_valコマンド適応後の内容表示:missing_to_naコマンド
missing_to_na(TestData[, 1])
<Labelled integer> Question_1
[1]  2 NA  2  1  1  4  1  4  4  2  2  2  1  5  5  2  1  5  1  5  5 NA  5 NA NA NA NA  4  4
[30] NA  5  1  5  4  4  1  5  5 NA  4  5  4  1  4  4  5  2  4  4 NA

Labels:
value  label  is_na
1      YES    FALSE
2      NO     FALSE
4      MISS   FALSE
5      CHANGE FALSE
#要約を表示
summary(missing_to_na(TestData[, 1]))
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's
1.000   2.000   4.000   3.293   5.000   5.000       9
#合計を計算
sum(missing_to_na(TestData[, 1]), na.rm = TRUE)
[1] 115

少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク