2013-07-22 4 views
1

내가 다른 컬럼에서 자신의 평등에 따라 같은 열에서 값이 누락 된 값을 대체하기 위해 노력하고 있어요 :STATA : 기존의 관측 누락 된 값을 대체

나는 & 국가와 다른 세 다른 산업과 다른 기업을 가지고 . 아래는 단지 작은 예입니다. 동일한 회사에서 나온 경우 누락 된 값 (열 업계 또는 국가)을 열의 기존 값으로 대체하고 싶습니다.

예를 들어, 회사 123은 2 년차에 업계가 누락되었습니다. 회사가 이전 (또는 때로는 성공한) 연도에 속해 있지만 추가 방법을 모르는 업계가 있습니다.

또 다른 예 : 나는 회사 나는 지난 몇 년 동안에서 자국을 할 수 있지만/전송하는 방법을 모른다 년 3 년에 국가가 누락 (444)가 3 년에 복사 :

--firm--year--industry--country 

--123----1-------1---------usa 

--123----2-------1---------usa 

--123----3--------.--------usa 

--333----1-------2---------usa 

--333----2--------.---------usa 

--444---1---------.----------fr 

--444---2---------2---------fr 

--444---3---------2----------. 

나는 stata/help와 인터넷에서 찾았다. 교체 명령 만 있었지만 동등한 숫자를 대체했습니다. 관측 숫자하지 않기 때문에, 나는 국가 교체 모르겠습니다

replace industry=(problaby something dependant of the firm (and maybe year)) if industry==. 

replace country=(problaby something dependant of the firm (and maybe year)) if country==. 

:

이 나는 ​​뭔가를 할 것이라 생각합니다. 나는 국가 교체를 위해 숫자가있는 새로운 변수를 생성해야한다고 생각한다.

고맙습니다.

답변

6

replacing missing values with neighboring values FAQ과 사용자가 작성한 xfill을 살펴보십시오. 후자는 정적 변수를 채우는 데 유용합니다. 클러스터의 누락 된 값을 해당 클러스터 내의 누락되지 않은 유일한 값으로 바꿉니다.

+0

@Dimitriy에게 감사드립니다. 어제 stata에서 FAQ를 이미 확인했지만 xfill-command가 완벽하게 도움이되었습니다! – Franz

0

업계 변수가 회사 내에서 동일이 특정 예를 들어, 당신은 또한이 코드는 모든 다른 회사의 목록입니다 로컬 변수 F를 생성

levelsof firm, local(F) 
foreach f of local F{ 
sum industry if firm==`f' 
replace industry=r(mean) if firm==`f' & industry==. 
} 

작성할 수 있습니다. 그런 다음 각 회사의 산업을 요약합니다. 업계 수는 동일한 회사의 관측치에 대해 항상 같기 때문에 평균값은 업계 수 일뿐입니다. 그런 다음이 코드는 해당 회사 내의 모든 관측치에 대해이 값이 될 industry 값을 대체합니다 (여기서 코드 "& industry ==."부분을 생략 할 수 있으며 여전히 같은 방식으로 작동합니다).

+0

양자 택일로, 당신은'bysort firm (industry) : 산업을 대신 할 수 있습니다. 즉, 'levelsof'와 루프 모두 불필요합니다. (당신이 말했듯이, 대체를 위해 사용되는 각 회사에 대해 최대 하나의 뚜렷한 가치가있는 암묵적 가정이 여기에 있습니다.) –