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 [/code]


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

スポンサードリンク

スポンサードリンク