2017-12-17 6 views
1

加重データを保存する方法はありますか?次回は直接ロードしますか?私は大規模な調査データセットを持っており、Rのsurveyパッケージを使用しています。 featherパッケージでデータを読み込みますが、svydesignを適用するとかなりの時間がかかります。r svydesignパッケージから加重データを保存する方法は?

df <- data.frame(col1 = rnorm(20, 0, 1), col2 = rnorm(20, 2, 2), w = rnorm(20, 1, .2)) 
df.w <- svydesign(id = ~1, data = df, weights = ~w) 

私は df.w を保存し、将来の分析のためにこれを使用する:ここでは再現性の例です。方法はありますか?

答えて

2

saveRDSreadRDSを使用すると、このようなオブジェクトを1つだけ保存/読み取ることができます。Rあなたは、単一のファイルに複数のオブジェクトを保存し?save?loadを見てみたい場合は

library(survey) 

df <- data.frame(col1 = rnorm(20, 0, 1), col2 = rnorm(20, 2, 2), w = rnorm(20, 1, .2)) 
df.w <- svydesign(id = ~1, data = df, weights = ~w) 

####### save to file ########## 
storage_file <- tempfile() 
#storage_file <- "mydesign.rds" ## uncomment here to use a local file 
saveRDS(df.w, storage_file) 

######## clear workspace ######### 
rm(df, df.w) 

######### load the data ########### 
df.w.loaded <- readRDS(storage_file) 

df.w.loaded 
## Independent Sampling design (with replacement) 
## svydesign(id = ~1, data = df, weights = ~w) 

######## delete storage file ###### 
file.remove(storage_file) 

+1

今後の読者には明らかでない場合は、Rを閉じると一時ディレクトリがクリアされるため、saveRDS()が正解であっても、この正確なコードは使用しないでください。 – Thomas

+0

グレゴールとトーマスに感謝します。 rds形式を使用するのは簡単ですが、読み込み時間は改善されません。私はタイミングを比較し、read_feather + svydesignがsaveRDS + loadRDS(またはreadrパッケージのwrite_rds + read_rds)よりもかなり速く実行することを発見しました。非圧縮rdsを含む。私は何か不足していますか? – MSD

+0

こんにちは、 'saveRDS'パラメータ' compress = FALSE'はより多くのディスクスペースを必要としますが、読み込み速度は向上します –

関連する問題