2017-05-22 1 views
0

더 컴팩트 형식 (STATA)에서 데이터 집합을 변형 :같은 것을 보았다 나는 데이터 세트를 처리 한 처음

+------+--------+-----------+-------+ 
 
| date | geo | variables | value | 
 
+------+--------+-----------+-------+ 
 
| 1981 | Canada | var1  | #  | 
 
| 1982 | Canada | var1  | #  | 
 
| 1983 | Canada | var1  | #  | 
 
| ... | ... | ...  | ... | 
 
| 2015 | Canada | var2  | #  | 
 
| 1981 | Canada | var2  | #  | 
 
| 1982 | Canada | var2  | #  | 
 
| ... | ... | ...  | ... | 
 
| 2015 | Canada | var2  | #  | 
 
| 1981 | Quebec | var1  | #  | 
 
| 1982 | Quebec | var1  | #  | 
 
| 1983 | Quebec | var1  | #  | 
 
| ... | ... | ...  | ... | 
 
| 2015 | Quebec | var2  | #  | 
 
| 1981 | Quebec | var2  | #  | 
 
| 1982 | Quebec | var2  | #  | 
 
| ... | ... | ...  | ... | 
 
| 2015 | Quebec | var2  | #  | 
 
+------+--------+-----------+-------+

그래서 내가 35 개 시간 기간, 두 나라가와 두 변수. 나는 같이하는 STATA 테이블을 변환하고 싶습니다 :

+------+--------+------+------+ 
 
| date | geo | var1 | var2 | 
 
+------+--------+------+------+ 
 
| 1981 | Canada | # | # | 
 
| 1982 | Canada | # | # | 
 
| ... | ... | ... | ... | 
 
| 2015 | Canada | # | # | 
 
| 1981 | Quebec | # | # | 
 
| 1982 | Quebec | # | # | 
 
| ... | ... | ... | ... | 
 
| 2015 | Quebec | # | # | 
 
+------+--------+------+------+

을하지만,이 훨씬 성공을 가지고 있지 않다. 나는 명령을 변수로 다른 관측을 분리하려고 :

separate value, by(variables) generate(var) 

이런 식으로 뭔가를 만들어 어떤 : 쓸모없는 값이 많이 포함

+------+--------+------+------+ 
 
| date | geo | var1 | var2 | 
 
+------+--------+------+------+ 
 
| 1981 | Canada | # | . | 
 
| 1982 | Canada | # | . | 
 
| ... | ... | ... | ... | 
 
| 2015 | Canada | # | . | 
 
| 1981 | Canada | . | # | 
 
| 1982 | Canada | . | # | 
 
| ... | ... | ... | ... | 
 
| 2015 | Canada | . | # | 
 
| 1981 | Quebec | # | . | 
 
| 1982 | Quebec | # | . | 
 
| ... | ... | ... | ... | 
 
| 2015 | Quebec | # | . | 
 
| 1981 | Quebec | . | # | 
 
| 1982 | Quebec | . | # | 
 
| ... | ... | ... | ... | 
 
| 2015 | Quebec | . | # | 
 
+------+--------+------+------+

합니다.

그래서, 더 구체적으로, 나는 B로 표 A에 직접 저를 가지고 뭔가를 싶습니다 (즉 separate를 사용하지 않고) B.에

덕분에 많은 표 C를 해결하기 위해, 또는 솔루션입니다.

답변

3

샘플 데이터가 없으면 내 대답을 테스트해야합니다. 다음과 같이 생각하면 올바른 방향으로 시작할 수 있습니다. 이것이 당신의 variables 변수의 내용을 가정합니다

reshape wide value, i(date geo) j(variables) string 

참고 변수 이름으로 사용하기에 적합하다. 예를 들어 변수에 대해 1potato 값이 문제가됩니다. 어떤 경우

,

help reshape 

귀하의 첫 번째 중지해야합니다.

덧글에 대한 응답으로 추가됨 : 여기에 일부 데이터가 나와 있으며이 데이터에 reshape이 작동한다는 데모가 있습니다. 아마도이 데이터가 실제 데이터와 어떻게 다른지 설명 할 수 있습니다. 오류 메시지는 날짜와 지역의 일부 조합에 대해 변수의 특정 값이 두 번 이상 발생 함을 나타냅니다.

. list, sepby(geo) 

    +----------------------------------+ 
    | date  geo variab~s value | 
    |----------------------------------| 
    1. | 1981 Canada  var1  111 | 
    2. | 1982 Canada  var1  211 | 
    3. | 1983 Canada  var1  311 | 
    4. | 1981 Canada  var2  112 | 
    5. | 1982 Canada  var2  212 | 
    6. | 1983 Canada  var2  312 | 
    |----------------------------------| 
    7. | 1981 Quebec  var1  121 | 
    8. | 1982 Quebec  var1  221 | 
    9. | 1983 Quebec  var1  321 | 
10. | 1981 Quebec  var2  122 | 
11. | 1982 Quebec  var2  222 | 
12. | 1983 Quebec  var2  322 | 
    +----------------------------------+ 

. reshape wide value, i(geo date) j(variables) string 
(note: j = var1 var2) 

Data        long -> wide 
----------------------------------------------------------------------------- 
Number of obs.      12 ->  6 
Number of variables     4 ->  4 
j variable (2 values)   variables -> (dropped) 
xij variables: 
            value -> valuevar1 valuevar2 
----------------------------------------------------------------------------- 

. rename (value*) (*) 

. list, sepby(geo) 

    +-----------------------------+ 
    | date  geo var1 var2 | 
    |-----------------------------| 
    1. | 1981 Canada 111 112 | 
    2. | 1982 Canada 211 212 | 
    3. | 1983 Canada 311 312 | 
    |-----------------------------| 
    4. | 1981 Quebec 121 122 | 
    5. | 1982 Quebec 221 222 | 
    6. | 1983 Quebec 321 322 | 
    +-----------------------------+ 

. 
+0

안녕하세요, 저는 샘플 데이터를 제공해 드리고 싶지만이 작업을 수행하는 방법을 모르겠습니다. 그리고 나는 당신에게 다음과 같은 에러 메시지를주었습니다 :'날짜 변수 내에서 유일한 변수 변수의 값 '. 그리고 기록을 위해이 질문을하기 전에'reshape' 명령의 모든 가능한 조합을 시도했지만 성공하지 못했습니다. – EBassal

+0

도움 주셔서 감사합니다. 네 말이 맞아. 잘될거야. 즉, 데이터에 문제가 있음을 의미합니다. 문제의 .dta 파일을 보낼 수 있습니까? 내가 볼 수있는 문제는 "var1, var2, ..."대신 "variables"에있는 이름이 다소 길이가 있고 공백을 포함한다는 것입니다. 문제를 일으킬 수 있습니까? 그렇지 않으면 "날짜와 지역의 일부 조합에 대해 변수의 특정 값이 두 번 이상 발생합니다"라고 말하면 어떻게 확인할 수 있습니까? 다시 한번 감사드립니다. – EBassal

+0

이것은 다른 질문입니다. 다른 스레드에서 물어보아야합니다. (중복 일 수도 있습니다) – timat