【问题标题】:read Excel cells into Stata global as variables将 Excel 单元格作为变量读入 Stata 全局
【发布时间】:2015-08-26 21:34:19
【问题描述】:

我想加入几个面板数据集。

这些数据集中的观察由一个 id 变量和一个标识观察时间的变量标识。 所有数据集都包含一些我需要的变量,一些我不需要的变量,而且从来没有相同的变量(不包括 id 和survey-time-variable)。

数据集很大,所以为了加快处理速度并减小最终数据集的大小,我想drop所有我不需要的变量。

这些变量存储在一个包含多列的 Excel 文件中。其中一列,比如 C2,包含我所有的变量名。

现在我相信我有两种可能的方法可以遵循,我按照我的喜好进行描述:

1) 将 Excel 文件中的变量名读入 Stata 中的全局变量,然后声明:

keep global varlist

这样只有我需要的变量应该被保留。

2) 使用 Excel 文件中的所有变量生成一个新的空数据集,然后

joinby id syear $varlist using dataset, update

无论如何,我需要将 excel 文件中的变量读出到全局变量中。 我意识到我可以通过从 Excel 复制并粘贴到 Stata 来做到这一点,但我想随着工作的进行,变量会发生一些变化,我想学习如何在 Stata 中正确编程。

【问题讨论】:

    标签: excel variables import stata


    【解决方案1】:

    我建议将变量名读入local,如果绝对必要,只使用global

    一种方法是使用import excellevelsof

    clear
    set more off
    
    // import from MS Excel and create local
    import excel using myvars.xlsx, cellrange(B2:B5) firstrow
    levelsof myvars, local(tokeep) clean
    
    // use local
    clear
    sysuse auto
    describe
    
    keep `tokeep'
    describe
    

    MS Excel 文件读取

    myvars
    make
    mpg
    weight
    

    在相应的单元格中。

    结果:

    . // import from MS Excel and create local
    . import excel using myvars.xlsx, cellrange(B2:B5) firstrow
    
    . levelsof myvars, local(tokeep) clean
    make mpg weight
    
    . 
    . // use local
    . clear
    
    . sysuse auto
    (1978 Automobile Data)
    
    . describe
    
    Contains data from C:\Program Files (x86)\Stata13\ado\base/a/auto.dta
      obs:            74                          1978 Automobile Data
     vars:            12                          13 Apr 2013 17:45
     size:         3,182                          (_dta has notes)
    --------------------------------------------------------------------------------------------------------------------
                  storage   display    value
    variable name   type    format     label      variable label
    --------------------------------------------------------------------------------------------------------------------
    make            str18   %-18s                 Make and Model
    price           int     %8.0gc                Price
    mpg             int     %8.0g                 Mileage (mpg)
    rep78           int     %8.0g                 Repair Record 1978
    headroom        float   %6.1f                 Headroom (in.)
    trunk           int     %8.0g                 Trunk space (cu. ft.)
    weight          int     %8.0gc                Weight (lbs.)
    length          int     %8.0g                 Length (in.)
    turn            int     %8.0g                 Turn Circle (ft.)
    displacement    int     %8.0g                 Displacement (cu. in.)
    gear_ratio      float   %6.2f                 Gear Ratio
    foreign         byte    %8.0g      origin     Car type
    --------------------------------------------------------------------------------------------------------------------
    Sorted by:  foreign
    
    . 
    . keep `tokeep'
    
    . describe
    
    Contains data from C:\Program Files (x86)\Stata13\ado\base/a/auto.dta
      obs:            74                          1978 Automobile Data
     vars:             3                          13 Apr 2013 17:45
     size:         1,628                          (_dta has notes)
    --------------------------------------------------------------------------------------------------------------------
                  storage   display    value
    variable name   type    format     label      variable label
    --------------------------------------------------------------------------------------------------------------------
    make            str18   %-18s                 Make and Model
    mpg             int     %8.0g                 Mileage (mpg)
    weight          int     %8.0gc                Weight (lbs.)
    --------------------------------------------------------------------------------------------------------------------
    Sorted by:  
         Note:  dataset has changed since last saved
    
    . 
    end of do-file
    

    另请参阅help file read,但对于您的情况,这似乎是一条不必要的复杂路径。

    【讨论】:

    • 非常感谢!是否可以将应该用于 varnames 的行设置为另一行,然后是第一行?
    • 你可以把它放在你想要的任何地方,只要它和你的变量名在同一列。 import excel 有一个选项来设置要导入的范围(参见我的示例)。选项firstrow 表示导入范围 的第一行保存要导入的变量的名称,仅此而已。仔细检查help import。删除前还要检查本地宏的内容。
    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 2023-03-19
    • 2022-07-20
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多