2016-09-21 6 views
1

우리는 haven 패키지를 사용하여 내 보낸 R로 만든 데이터로 Stata에서 작업하고 있습니다. 우리는 이름에 점이있는 변수를 사용하여 문제를 발견했습니다. 내가 할 때, STATA에서 지금Stata에서 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 

첫 번째 문제 - 나는 빈 데이터 집합을 얻을. 두 번째 문제 - 변수 이름에 점을 붙입니다. Stata에서는 불법이어야합니다.

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

그런 행동의 원인이 무엇 그러므로 모든 명령은 직접

drop var.1 

같은 변수 이름이 오류를 반환 사용하고 계십니까? 이 문제에 대한 해결책은 무엇입니까?

답변

3

STATA에서이 뜻 drop var.1 : (Excel에서와 같은) 여기

drop var?1 

, ?는 하나의 문자에 대한 와일드 카드로 사용됩니다. (.에 해당하는 정규 표현식)

불행히도,이 경우에도 drop var_1 (존재하는 경우)입니다.

haven .dta 파일을 작성할 때 누락 된 값에 대해 확실하지 않습니다. Stata 14.1 및 haven 0.2.0에서이 결과를 재현 할 수 있습니다. haven에서 read_dta 함수를 사용하지만 ,

temp2 <- read_dta("test_df.dta") 

는 data.frame를 반환한다. 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