将 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 excel
和 levelsof
:
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
,但对于您的情况,这似乎是一条不必要的复杂路径。
我想加入几个面板数据集。
这些数据集中的观察由一个 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 excel
和 levelsof
:
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
,但对于您的情况,这似乎是一条不必要的复杂路径。