2014-07-07 3 views
1

나는 summarize과 같은 Stata의 collapse을 사용하고 싶습니다. 나는 새로운 데이터 집합을 만드는 것 어떻게요약 붕괴처럼 사용하십시오

 Obs Mean Std. Dev. Min Max 
Score1 54  17   3  11 22 
Score2 32  13   2  5  28 
Score3 43  22   4  17 33 
Value1 54  9   3  2  12 
Value2 32  31   7  22 44 
Value3 43  38   4  31 45 
Speed1 54  3   1  1  11 
Speed2 32  6   3  2  12 
Speed3 43  8   2  2  15 

을 (collapse 또는 뭔가를 사용 : 나는 데이터가 (같은 사람에게 1의 대응을, 그래서 2의와 3의 수행) 즉, summarize D, 다음과 같습니다 말해 다른 것)은 다소 summarize처럼 보이지만 다음과 같이 보입니까? 변수 뒤의 숫자는 내 데이터의 관측치에 해당합니다. 따라서 Score1, Value1Speed1은 모두 _n == 1에 해당합니다.

_n ScoreMean ValueMean SpeedMean ScoreMax ValueMax SpeedMax 
1  17   9   3  22  12  11 
2  13   31   6  28  44  12 
3  22   38   8  33  45  15 

(.. 나는 간결 표준 편차와 최소를 생략했다.)

내가 collapse (mean) Score1 Score2 Score3 Value1 Value2 Value3 Speed1 Speed2 Speed3를 실행하면, 나는 매우 도움이되지 않습니다 얻을 :

 Score1 Score2 Score3 Value1 Value2 Value3 Speed1 Speed2 Speed3 
1 17  13  22  9  31  38  3  6  8 

이것은이다 바른 길에. 그래도 단지 내게 의미를 부여합니다. 한 번에 하나 이상의 통계를 제공하는 방법을 모르겠습니다. 나는 어떤 점에서 어떻게 든 reshape을 사용할 필요가 있다고 생각한다.

답변

2

로베르토의 장난감 데이터 세트에서 시작됩니다. 나는 그것이 800 개의 객체로 더 쉽게 일반화된다고 생각한다. (사용량 구문의 온화한 남용 그래서 그런데, STATA _n 항상 만, 현재 데이터 세트 또는 by:에 의해 정의 된 그룹에서 관찰 번호를 의미한다.)

clear 
input score1 score2 value1 value2 speed1 speed2 
5 8 346 235 80 89 
2 10 642 973 65 78 
end 

gen j = _n 
reshape long score value speed, i(j) j(i) 
rename score yscore 
rename value yvalue 
rename speed yspeed 
reshape long y, i(i j) j(what) string 
collapse (mean) mean=y (min) min=y (max) max=y, by(what i) 
reshape wide mean min max, j(what) i(i) string 
+0

답변과 '_n'에 대한 설명에 감사드립니다. – bill999

3

한 가지 방법은, 리드 다음

*clear all 
set more off 

input /// 
score1 score2 value1 value2 speed1 speed2 
5 8 346 235 80 89 
2 10 642 973 65 78 
end 

list 

summarize 

*----- 

collapse (mean) score1m=score1 score2m=score2 /// 
    value1m=value1 value2m=value2 /// 
    speed1m=speed1 speed2m=speed2 /// 
    (max) score1max=score1 score2max=score2 /// 
    value1max=value1 value2max=value2 /// 
    speed1max=speed1 speed2max=speed2 

gen obs = _n 

reshape long [email protected] [email protected] [email protected] [email protected] [email protected] [email protected], i(obs) j(n) 
drop obs 

list 

여러 통계 요구하는 것은 간단합니다. [(stat)] target_var=varname 구문을 사용하면 몇 가지 통계를 요구할 때 충돌하는 이름을 얻지 못합니다. 그런 다음 reshape.

변수/주제가 많은 경우 매우 지루할 것입니다. 다른 방법이 있습니다. 그때까지 아무도 대안을 게시하지 않으면 나중에 답을 수정합니다.

+0

와우 - 정말 감사합니다. 이것은 완벽하게 작동합니다! 많은 변수가있는 한 - 800 개이므로 1에서 800까지의 숫자를 사용합니다. – bill999