将 Excel 个单元格作为变量读入 Stata 全局

read Excel cells into Stata global as variables

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

这些数据集中的观察由一个 id 变量和一个标识观察时间的变量标识。 所有数据集都包含一些我需要的变量,一些我不需要的变量,并且永远不会包含相同的变量(不包括 id 和调查时间变量)。

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

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

现在我相信我有两种可能的方法可以遵循,我按我喜欢的顺序描述它们:

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

keep global varlist

这样只保留我需要的变量。

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

joinby id syear $varlist using dataset, update

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

我建议将变量名读入 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,但对于您的情况,这似乎是一条不必要的复杂路径。