StataのデータをRでつくる(sjlabelledパッケージ)
とてもマニアックな備忘録シリーズ。
Introduction
Rにおけるデータフレームは他の統計ソフトのおけるデータ形式に比して、必要最小限の情報しか入っていない。
したがって、他の統計ソフト(SPSS , Stataなど)向けのデータを出力する時には、データ本体に加え必要な付加情報(値ラベル,変数ラベルなど)を与えてやる必要がある。
この記事ではデータをCSVから読み込んで、必要な情報をsjlabelledパッケージを利用して付加したうえでdta形式で出力するまでの手続きを述べる。
参考URL
sjlabelled(R側)でやること。
前提として、CSV形式の原データと、値/変数ラベルに関するデータが別々に与えられていて、
CSVをデータフレームとして読み込んだうえでそこにラベル情報を付加してStata用に変換する、みたいな流れを想定する。
変数ラベルの付与
変数ラベル(変数名に関する情報)を与えるには、sjlabelled::set_label()を使う
sjlabelled::set_label(dta$var1 , "変数1") #方法1 sjlabelled::set_label(dta$var1 ) <- "変数1" #方法2 str(hs_df$var1) # int [1:2970] 0 0 0 0 0 0 1 0 1 0 ... # - attr(*, "label")= chr "変数1"
値ラベルの付与
値ラベルを与えるには、sjlabelled::set_labels()を使う*1。
指定の方法はいくつかあるけれども、named vectorを使う方法が一番確実。
(値ベクトルの値の種類の数と、与えたラベルの数が合わない時に挙動がぶれない)
dummy <- sample(1:4 , 40 , replace=T) dummy <- set_labels(dummy,labels= c("A"=1 , "B"=2, "C"=3, "D"=4)) str(dummy) # int [1:40] 4 3 3 1 3 1 1 1 1 1 ... #- attr(*, "labels")= Named num [1:4] 1 2 3 4 # ..- attr(*, "names")= chr [1:4] "A" "B" "C" "D"
Stata形式への変換と確認
Stata形式への変換・書き出し
write_stata(test_data ,path="/Users/user/Desktop/test1.dta", version =14)
versionは8~14がsupportedだが、一応ver16でも確認できている。
Enjoy!!!
*1:関数名が紛らわしい