2016-09-21 4 views
1

私たちはスタータで、Rで作成されたデータで、havenパッケージを使用してエクスポートしています。私たちは、名前にドットが付いた変数についての問題を見つけました。私が行うとき、Stataの中で、今Stataでhavenがdtaファイルを作成しました - 変数名のドットをどう扱うのですか?

library("haven") 
var.1 <- c(1,2,3) 
var_2 <- c(1,2,3) 
test_df <- employ.data <- data.frame(var.1, var_2) 
str(test_df) 
write_dta(test_df, "D:/test_df.dta") 

:問題、いくつかの最小限のRコードを複製するには

use "D:\test_df.dta" 
d 

まず問題を - 私は、空のデータセットを取得します。 2番目の問題は、変数名にドットを付けることです.Stataではこれが違法であるべきです。したがって

drop var.1 

のように直接変数名を使用して、任意のコマンドはエラーを返します。

factor variables and time-series operators not allowed 
r(101); 

そのような行動を引き起こしていますか?この問題の解決策はありますか?

答えて

3

これはStataの中drop var.1ます(Excelのように)ここで

drop var?1 

?は、単一文字のワイルドカードとして使用されます。 (.相当の正規表現)

残念ながら、残念ながら、これもdrop var_1(存在する場合)になります。

havenで.dtaファイルを書き込むときに値が不明であるとはわかりません。 Stata 14.1とhaven 0.2.0でこの結果を再現することができました。 しかし、

temp2 <- read_dta("test_df.dta") 

はdata.frameを返し、havenからread_dta関数を使用。 havenの代わりに、過去に問題なしでreadstata13パッケージを使用しました。

library(readstata13) 
save.dta13(test_df, "testdf.dta") 

このコードは同じ変数名の問題があるが、それはStataの14.1に読んだときに正しい値を含ま.dtaファイルを提供します。 save.dta13へのconvert.underscore引数があります。これは、Stata変数名の無効な文字を削除するためのものです。この例では、バージョン0.8.5ではreadstata13が正しく動作することが確認されましたが、バージョン0.8.2を含む一部の旧バージョンではバグがありました。

+1

ありがとうございます。少なくともこの特定の例では、 'drop'トリックは実際には良い方法です。 'readstata13'がStataで読み取り可能なデータセットを作成することも確認できます。 – radek

関連する問題