Stata 使用类似折叠的方法进行总结

Stata 使用类似折叠的方法进行总结,stata,reshape,data-manipulation,Stata,Reshape,Data Manipulation,我想使用Stata的折叠像总结。假设我有数据(1对应于同一个人,2和3对应于同一个人),当summaryd时,如下所示: Obs Mean Std. Dev. Min Max Score1 54 17 3 11 22 Score2 32 13 2 5 28 Score3 43 22 4 17 33

我想使用Stata的
折叠
总结
。假设我有数据(1对应于同一个人,2和3对应于同一个人),当
summary
d时,如下所示:

        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
或其他方法),它看起来有点像
summary
给出的数据集,但看起来像以下内容?请注意,变量后面的数字对应于我的数据中的观察值。因此,
Score1
Value1
Speed1
都对应于_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
(为了简洁起见,我省略了标准偏差和最小值。)

当我运行
折叠(平均)记分1记分2记分3值1值2值3速度1速度2速度3
时,我得到了以下结果,但这并不是很有帮助:

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

这是在正确的轨道上。不过,这只能说明我的意思。我不知道如何让它一次给出多个统计数据。我想我需要在某种程度上使用
重塑

一种方法,遵循您的指导:

*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 score@m score@max value@m value@max speed@m speed@max, i(obs) j(n)
drop obs

list
询问几个统计数字很容易。使用
[(stat)]target_var=varname
语法,这样在询问多个统计信息时不会得到冲突的名称。然后,
重塑


如果有许多变量/主题,它将变得非常乏味。还有其他方法。如果到时候没有人发布备选方案,我将在稍后修改答案。

按照您的建议,单向修改:

*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 score@m score@max value@m value@max speed@m speed@max, i(obs) j(n)
drop obs

list
询问几个统计数字很容易。使用
[(stat)]target_var=varname
语法,这样在询问多个统计信息时不会得到冲突的名称。然后,
重塑


如果有许多变量/主题,它将变得非常乏味。还有其他方法。如果到时候没有人发布替代方案,我将在稍后修改答案。

这从Roberto的示例玩具数据集开始。我认为它更容易推广到800个对象。(顺便说一下,在Stata
\n
中,始终且仅指当前数据集或组中由
By:
定义的观察数,因此您的用法是轻度语法滥用。)


这从Roberto的示例玩具数据集开始。我认为它更容易推广到800个对象。(顺便说一下,在Stata
\n
中,始终且仅指当前数据集或组中由
By:
定义的观察数,因此您的用法是轻度语法滥用。)


哇-非常感谢你。这很好用!因为有很多变量-有800个,所以我将从1到800。哇-非常感谢。这很好用!因为有很多变量-有800个,所以我将从1到800。感谢您的回答和对
\n
的澄清。感谢您的回答和对
\n
的澄清。