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
[/code]
少しでも、あなたのウェブや実験の解析が楽になりますように!!