frames (数据框) 操作是 Stata 16+ 的进阶操作,适用于多个数据集的读写操作。相比于 preserve/restore 命令,操作起来更快,冗余更少,效率更高!
🧰 知识点:frames dir / frames create / frames change / frames put / frames copy / frames post / frlink / frames drop
推荐资料:
慧航 | Stata教程第4节:数据框的使用_哔哩哔哩_bilibili
Stata:如何同时对多个数据框操作-frame
使用stata数据框frame处理数据
利用stata计算分组基尼系数的四种方法
-
数据框(Data frames)
- 定义:支持同时操作多个数据集而不用频繁打开、关闭文件,或者频繁使用
preserve/restore
操作。 - 好处:数据框的数据常驻内存,启用、切换速度快;而打开、关闭文件需要频繁读取和写入硬盘,速度慢。
- 定义:支持同时操作多个数据集而不用频繁打开、关闭文件,或者频繁使用
-
常用命令
- 打开 Stata 之后便会默认创建的 frames:
default
- 查看内存的 frames:
frames dir
- 新建空 frames
frames create fname
- 新建 frames 并添加新变量
frames create fname varname1 varname2
- 向 frames 添加数据
frames post fname (111) (222)
- 不同 frames 之间的切换
frames change fname
- 不切换当前 frames 的前提下,调用/查看/描述另一个 frames 的数据
frames fname: use a.dta, clear
frames fname: sum wage
- 拷贝 frames
- 完整拷贝:
frames copy fname fname_new
- 部分拷贝:
frames put var1-var5, into(fname_new)
- 完整拷贝:
- 删除 frames
- 删除某个 frames:
frames drop fname
- 清除所有的 frames:
clear frames
/clear all
- 删除某个 frames:
- 多个 frames 连接(类似 merge):
frlink
frlink m:1 cid, frame(usingfname)
- 调用当前数据框以外的其他数据框某个变量的取值
frval(fname, varname)
- 复制变量至当前 frames
frget varname, from(fname)
- 打开 Stata 之后便会默认创建的 frames:
-
使用场景(小案例)
- 把女性样本的数据另存为
female.dta
- 创建新的
frames1
和 新的frames2
,并分别调用a.dta
和b.dta
数据,利用数据拟合线性回归,然后进行结果对比 - 将当前
frames
和frames2
根据cid
和year
1:1
匹配起来,然后利用frames2
中的x
和x1
生成一个新变量x_new
- 把女性样本的数据另存为
* 把女性样本的数据另存为 female.dta *
use main.dta
frames put if sex == 1, into(female)
* 创建新的 frames1 和 新的 frames2,并分别调用 a.dta 和 b.dta 数据,利用数据拟合线性回归,然后进行结果对比 *
frames create a
frames a: use a.dta
frames create b
frames b: use b.dta
frames a: reg y_a x_a
est store a
frames b: reg y_b x_b
est store b
est table a b
* 将当前 frames 和 frames2 根据 cid 和 year 1:1 匹配起来,然后利用 frames2 中的 x 和 x1 生成一个新变量 x_new *
frlink 1:1 cid year, frame(frames2)
gen x_new = frval(frames2, x1)/frval(frames2, x2)