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)))
#&#27083;&#36896;&#30906;&#35469;
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" ...
########

#&#22793;&#25968;&#12521;&#12505;&#12523;&#12434;&#20184;&#19982;:var_label&#12467;&#12510;&#12531;&#12489;
var_label(TestData[, 1]) <- "Question_1"
#&#27083;&#36896;&#30906;&#35469;
#label&#23646;&#24615;&#12364;&#26032;&#12383;&#12395;&#20184;&#19982;&#12373;&#12428;&#12414;&#12377;
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&#12391;View&#12467;&#12510;&#12531;&#12489;&#12391;&#34920;&#31034;&#12377;&#12427;&#12392;
#&#12487;&#12540;&#12479;&#21517;&#19979;&#37096;&#12395;&#22793;&#25968;&#12521;&#12505;&#12523;&#12364;&#34920;&#31034;&#12373;&#12428;&#12414;&#12377;
View(TestData)

#&#20516;&#12395;&#12521;&#12505;&#12523;&#12434;&#20184;&#19982;:labelled&#12467;&#12510;&#12531;&#12489;
#&#27880;&#24847;:numeric,character&#12398;&#12415;&#23550;&#35937;&#12391;&#12377;
#&#12521;&#12505;&#12523;&#20869;&#23481;&#12434;&#25351;&#23450;:labels&#12458;&#12503;&#12471;&#12519;&#12531;
TestData[, 2] <- labelled(TestData[, 2],
                          labels = c(YES = "A", NO = "B", OR = "C"))
#&#27083;&#36896;&#30906;&#35469;
#Data2&#12395;&#12521;&#12505;&#12523;&#23646;&#24615;&#12364;&#20184;&#19982;&#12373;&#12428;&#12356;&#12414;&#12377;
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

#&#20869;&#23481;&#34920;&#31034;
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

#&#12521;&#12505;&#12523;&#23646;&#24615;&#12434;&#22793;&#26356;&#12377;&#12427;:val_label&#12467;&#12510;&#12531;&#12489;
#&#24773;&#22577;&#21066;&#38500;&#12399;NULL&#12434;&#25351;&#23450;
val_label(TestData[, 2], "C") <- "CHANGE"
#&#20869;&#23481;&#34920;&#31034;
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をコピーしました