Stata 如何编写数据聚合的最佳代码?

Stata 如何编写数据聚合的最佳代码?,stata,Stata,我有以下数据集(个人级别数据): 我需要估计每个州每年的平均收入,并创建一个新的数据集,如下所示: state year average_income ar 2000 150 ar 2001 200 ar 2002 250 il 2000 150 il 2001 160 il 2002 160 ...........etc............... 我已经有了一个

我有以下数据集(个人级别数据):

我需要估计每个州每年的平均收入
,并创建一个新的数据集,如下所示:

state   year   average_income
ar      2000      150
ar      2001      200
ar      2002      250
il      2000      150
il      2001      160
il      2002      160
...........etc...............

我已经有了一个运行非常好的代码(我有两个循环)。然而,我想知道在类似Stata的sql风格查询中有没有更好的方法?

这不需要两个循环,或者任何循环。事实上,有更有效的方法来做到这一点。在多个组上重复操作时,
bysort
命令非常有用:

bysort year state: egen average_income = mean(income)
你也不必创建一个新的数据集,你可以删减这个数据集并保存它。首先只保留您想要的变量(州、年和平均收入),并消除重复变量:

keep state year average_income
duplicates drop
save "mynewdataset.dta"

这不需要2个循环,或者任何循环。事实上,有更有效的方法来做到这一点。在多个组上重复操作时,
bysort
命令非常有用:

bysort year state: egen average_income = mean(income)
你也不必创建一个新的数据集,你可以删减这个数据集并保存它。首先只保留您想要的变量(州、年和平均收入),并消除重复变量:

keep state year average_income
duplicates drop
save "mynewdataset.dta"

问题上有SQL标记。这是SQL中的基本聚合查询:

select state, year, avg(income) as average_income
from t
group by state, year;
要将其放入表中,取决于您的数据库。以下其中一项通常有效:

create table NewTable as
    select state, year, avg(income) as average_income
    from t
    group by state, year;
或:


问题上有SQL标记。这是SQL中的基本聚合查询:

select state, year, avg(income) as average_income
from t
group by state, year;
要将其放入表中,取决于您的数据库。以下其中一项通常有效:

create table NewTable as
    select state, year, avg(income) as average_income
    from t
    group by state, year;
或:


这比目前建议的任何代码都要短:

  collapse average_income=income, by(state year) 

这比目前建议的任何代码都要短:

  collapse average_income=income, by(state year) 

谢谢你+1。我确实知道如何使用SAS、Oracle等进行此操作。但是,我需要使用
Stata
进行此操作。那么Stata中是否有
sql
sql-like
命令?@Buras。如果您不需要这样的解决方案,为什么要用SQL标记它?这是由另一个编辑器添加的,因为他请求使用类似命令的SQL Hank you+1。我确实知道如何使用SAS、Oracle等进行此操作。但是,我需要使用
Stata
进行此操作。那么Stata中是否有
sql
sql-like
命令?@Buras。如果您不需要这样的解决方案,为什么要用SQL标记它?这是由另一个编辑器添加的,因为他要求使用类似SQL的命令。数据库中有一个类似的问题。尼克的回答是最简短的:你想做的正是
collapse
所做的。数据库中有一个类似的问题。尼克的回答是最简短的:你想做的正是
collapse
所做的。