【R】RからStataのデータを書き出すときのエラー
Rでデータ分析してるのですが、時々「これStataの関数で走らせてみたい」とか「他の人はStataメインなのでデータ共有するのにstata形式で書きだしたい」というときがあります。
古いバージョン(Stata 12以前?)はforeignパッケージのwrite.dtaで書き出し、read.dtaで読み込みができたけど、13以降で少しフォーマットが変わったのかエラー吐くことも多いみたいです。
13以降の書き出しはhavenパッケージのwrite_dtaが良いようです。
haven::write_dta(df, "df.dta")
データの読み込みもreadstata13というパッケージもありますが、havenパッケージでよいのではないでしょうか。
# readstata13を使う場合 readstata13::readstata13("df.dta") # havenを使う場合 haven::read_dta("df.dta")
エラー
haven::write_dtaで以下のようなエラーが出ました。
Writing failure: A provided name contains an illegal character.
調べてみると、変数名(列名)がstataで受け付けるタイプではなかったことが原因のようです。
特殊記号をアンダーバーに変えたり、大文字を小文字に直したりする必要がありますが、これは以下の関数で一発解決。
df_new = janitor::clean_names(df) haven::write_dta(df_new, "df_new.dta")
dfのところは各自のデータフレームを入れてください。