【问题标题】:Stata - Show grouped frequenciesStata - 显示分组频率
【发布时间】:2020-12-28 04:59:42
【问题描述】:

我有一个包含国家、研究和数据集合的数据集。我想创建一个频率分布,它显示在每个国家/地区进行的研究总数。

我遇到的问题是我的数据是按数据集合组织的。一些研究有多个数据收集站点并测量一个国家的不同部分(我们会说 3 个区域)。因此,一项研究可以有多行。但是,对于我需要的表格,我基本上希望它将研究组合在一起,并以是或否(0 或 1)报告该国家是否包含在研究中。本质上,我不在乎在每个单独的研究中观察到一个国家的多少个地方。我只想知道一个国家是否包含在一项研究中。下面的例子可能会有所帮助。

当前数据:

Study Data Coll Nation
1 1 Brazil
1 2 Brazil
1 3 Brazil
1 4 France
2 5 Brazil
2 6 India
3 7 Brazil
4 8 France

所需的表:

Nation f (of studies)
Brazil 3
France 2
India 1

如您所见,在上面的示例中,研究 #1 观察了巴西的 3 个不同地区。在研究#2 和#3 中也观察到了这个国家。我需要创建的表只有一个巴西的“3”,因为这就是巴西被纳入的研究数量。

【问题讨论】:

    标签: grouping stata data-management


    【解决方案1】:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input byte(study data_coll) str6 nation
    1 1 "Brazil"
    1 2 "Brazil"
    1 3 "Brazil"
    1 4 "France"
    2 5 "Brazil"
    2 6 "India" 
    3 7 "Brazil"
    4 8 "France"
    end
    
    contract study nation
    drop _freq study
    contract nation
    list
    

    结果:

    . list
    
         +----------------+
         | nation   _freq |
         |----------------|
      1. | Brazil       3 |
      2. | France       2 |
      3. |  India       1 |
         +----------------+
    

    【讨论】:

      【解决方案2】:

      请注意,如果您希望保留原始数据结构,可以避免使用contract

      egen tag = tag(Nation)
      egen wanted = total(tag), by(Study)
      tabdisp Nation, c(wanted)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 2017-02-14
        • 1970-01-01
        • 2017-11-12
        相关资源
        最近更新 更多