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

Rの解析に役に立つ記事
スポンサーリンク

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

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

パッケージバージョンは2.10.0.9000。実行コマンドはR version 4.2.2で確認しています。

スポンサーリンク

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

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

#パッケージのインストール
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>[50]>
[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
A   YES
B    NO
C    OR

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

Labels:
value  label
A    YES
B     NO
C CHANGE

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

タイトルとURLをコピーしました