我正在使用多年来的人口普查数据。每年,数据集的结构和内容都完全相同(即向受访者提出相同的问题,并且多年来他们的答案以相同的方式列出)。我想导入多个数据集,对每个数据集应用更改,然后组合它们。
为了说明我的意思,我导入了 2018 年数据(框架标题为“cps18”)并删除了三个特定行。然后,我使用
frame change
并导入了 2019 年数据(称为“cps19”),并应用了类似的更改。当我使用 append using cps18
时,控制台返回“找不到文件 cps18。”
从我在网上找到的信息来看,
append
命令似乎用于将磁盘上的数据集与内存中的帧组合起来。但是如果内存中有两个或更多帧怎么办?有没有办法把它们结合起来?
过去的自己!您可以编写一个循环来跨多个文件执行相同的操作。假设您有 cps17.csv、cps18.csv 和 cps19.csv。我们可以编写一个循环来导入每个文件,进行必要的更改,然后追加:
cwf default // revert to default frame
clear
tempfile cpsdata
save `cpsdata', replace empty
forval y = 17/19 {
import delimited cps`y'.csv
egen newvar1 = oldvar1 + oldvar2 // sample change
destring year, replace // sample change
append using `cpsdata', force
save `cpsdata', replace
}