将bysort与多个变量一起使用时,结果不同

时间:2019-03-19 19:43:49

标签: sorting stata

当我仅将bysort前缀与一个变量一起使用并生成另一个变量的均值时,我得到了一组值,例如42,43,39

bysort date: egen dailymean = mean(temperature) // Gives mean temp for each day

当我将bysort与两个变量一起使用并产生相似的均值时,我得到一个不同的值,例如49,48,51等。我想了解这些值表示什么。

bysort date isCentralPark: egen cpdailymean = mean(temperature)

在第一种情况下,我认为我通过按日期(换句话说就是日均温度)排序的变量来获取温度的均值。

第二次,我得到的是中央公园的日平均气温还是其他一些东西?

1 个答案:

答案 0 :(得分:2)

sort的帮助文件明确指出:

  

排序将基于对当前数据的观察按升序排列   变量列表中变量的值...

by的帮助文件还明确指出:

  

... by 对每组观察值重复以下命令的命令   varlist中的变量是相同的...

因此bysort只是在执行by操作之前对数据进行排序。

您需要仔细研究帮助文件中提供的广泛示例,然后再在此处提出一些根本性的问题。

作为 Stata tag wiki解释说, “ ...您根本无法替代基本 Stata的概念和语法...

在没有示例数据的情况下,尽管重复请求,您还是无法 提供,这是varlist如何影响bysort的简单示例:

clear
set obs 15
set seed 1234567890

egen id = seq(), block(5)
generate a = rnormal()

bysort id: generate n1 = _n
list

     +---------------------+
     | id           a   n1 |
     |---------------------|
  1. |  1   -.6953015    1 |
  2. |  1   -.5804186    2 |
  3. |  1   -1.938336    3 |
  4. |  1    .9347979    4 |
  5. |  1    -.767854    5 |
     |---------------------|
  6. |  2    .3776966    1 |
  7. |  2   -.5545912    2 |
  8. |  2   -.0636268    3 |
  9. |  2    2.041136    4 |
 10. |  2   -.2200604    5 |
     |---------------------|
 11. |  3    .5418512    1 |
 12. |  3    1.174645    2 |
 13. |  3    .3234408    3 |
 14. |  3    -.544277    4 |
 15. |  3    .2121655    5 |
     +---------------------+

bysort id a: generate n2 = _n
list

     +--------------------------+
     | id           a   n1   n2 |
     |--------------------------|
  1. |  1   -1.938336    3    1 |
  2. |  1    -.767854    5    1 |
  3. |  1   -.6953015    1    1 |
  4. |  1   -.5804186    2    1 |
  5. |  1    .9347979    4    1 |
     |--------------------------|
  6. |  2   -.5545912    2    1 |
  7. |  2   -.2200604    5    1 |
  8. |  2   -.0636268    3    1 |
  9. |  2    .3776966    1    1 |
 10. |  2    2.041136    4    1 |
     |--------------------------|
 11. |  3    -.544277    4    1 |
 12. |  3    .2121655    5    1 |
 13. |  3    .3234408    3    1 |
 14. |  3    .5418512    1    1 |
 15. |  3    1.174645    2    1 |
     +--------------------------+

bysort id (a): generate n3 = _n
list

     +-------------------------------+
     | id           a   n1   n2   n3 |
     |-------------------------------|
  1. |  1   -1.938336    3    1    1 |
  2. |  1    -.767854    5    1    2 |
  3. |  1   -.6953015    1    1    3 |
  4. |  1   -.5804186    2    1    4 |
  5. |  1    .9347979    4    1    5 |
     |-------------------------------|
  6. |  2   -.5545912    2    1    1 |
  7. |  2   -.2200604    5    1    2 |
  8. |  2   -.0636268    3    1    3 |
  9. |  2    .3776966    1    1    4 |
 10. |  2    2.041136    4    1    5 |
     |-------------------------------|
 11. |  3    -.544277    4    1    1 |
 12. |  3    .2121655    5    1    2 |
 13. |  3    .3234408    3    1    3 |
 14. |  3    .5418512    1    1    4 |
 15. |  3    1.174645    2    1    5 |
     +-------------------------------+