2017-12-17 18 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을 사용하면 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'는 더 많은 디스크 공간을 필요로하지만로드 속도를 향상시킵니다 –