2013-09-06 2 views
2

maxvars을 32767로 설정하고 memory을 640Mb로 설정하여 Stata/SE 12를 사용 중입니다. 현재 데이터 세트는 9,000 회의 관측 (행)과 16,800 개의 변수 (열 v1, v2에서 최대 v16800)로 구성됩니다.Stata : reshape 명령을 사용하여 많은 수의 변수를 긴 형식으로 변환

나는 다음 코드 줄을 사용하여 reshape 명령을 사용하여 긴 형식으로 데이터 집합을 변환하고 싶습니다 :

reshape long v , i(simulation) j(_count) 

STATA 날 134 오류 제공 : _count 너무 많은 값을 사용합니다.

관찰 수에 대한 Stata 제한이 있습니까? 여기에 무슨 문제가있을 수 있습니까?

답변

5

제한은 Stata가 _count 변수를 만드는 방법과 관련이 있습니다. 여기에는 tabulate이 포함됩니다. 즉, 최대 12,000 개의 변수를 처리 할 수 ​​있습니다. 당신이 할 수있는 두 파일을 분할, 각 하위 파일을 모양을 바꾼 후 그들 append. 그래서 같은 뭔가 :

// create some example data 
clear 
set obs 5 
gen id = _n 
forvalues i = 1/10 { 
    gen v`i' = rnormal() 
} 

// split the files: 
tempfile orig one two 

save `orig' 

keep id v1-v5 
save `one' 

use `orig' 
keep id v6-v10 
save `two' 

// reshape the files separately 
use `one' 
reshape long v, i(id) j(_count) 
save `one', replace 

use `two' 
reshape long v, i(id) j(_count) 
save `two', replace 

// bring the files together again 
append using `one' 
sort id _count 
list, sepby(id) 
2

이 최선의 해결이 아니라 두 개 이상의 데이터 세트에 주요 데이터 세트에서 변수를 분할 한 후 별도로 모양 변경을하고 추가하려고합니다.

Stata/MP 11을 사용하여 set memory 2gset maxvar 32000으로 시뮬레이트하고 복제했는데 8,000 개의 변수가있는 데이터 세트를 재구성 할 수는 있지만 16.8k 변수로 동일하게 시도 할 때 동일한 오류가 발생합니다. 비록 8K조차도 명령을 완료하는데 시간이 걸렸습니다. 최종 추가 루프는 하나의 변경 만 필요하기 때문에 1000의 데이터 세트로 분할하는 것이 더 좋습니다.

Reshape는 몇 백 가지의 값인 j을 크게 상회하는 것으로 나타납니다. 다른 사람이 이에 대한 기술적 인 배경을 알고있을 수 있습니다.

+1

분명히 나는 ​​@MaartenBuis와 같은 시간에 내 대답을 쓰고 있었기 때문에 비슷한 점을 조언했다. – SOConnell

관련 문제