将所有 .dta 文件合并到一个文件夹中?
Merge all .dta files in one folder?
我有一个包含 36 个结构相同的 .dta 文件的文件夹。每个都有 2 个字段:RowID 和值。每个文件还具有相同的行数 (2,500)。 “值”变量的名称对于每个文件都是唯一的。我想构建一个循环,加载第一个 .dta 文件,然后 merges 来自其他 35 个文件的“值”变量。任何帮助将不胜感激。
以下是来自 3 个 .dta 文件的示例数据:
Example 1:
input int rowid_ float value_ex_1
1 0
2 0
3 0
4 1
5 1
6 1
7 1
8 1
9 1
10 1
Example 2:
input int rowid_ float value_ex_2
1 1
2 0
3 0
4 1
5 1
6 0
7 0
8 0
9 0
10 0
Example 3:
input int rowid_ float value_ex_3
1 0
2 0
3 0
4 0
5 0
6 1
7 1
8 0
9 0
10 1
为了遍历所有 .dta files
,首先确保它们以逻辑顺序命名(即 example_1.dta、example_2.dta、example_3.dta 等)。
然后,您可以加载第一个数据集并使用 forvalues
循环遍历其他数据集:
cd "path/to/your/datasets"
use example_1.dta, clear
forvalues i = 2(1)35 {
merge 1:1 rowid_ using example_`i'.dta
drop _merge
}
我有一个包含 36 个结构相同的 .dta 文件的文件夹。每个都有 2 个字段:RowID 和值。每个文件还具有相同的行数 (2,500)。 “值”变量的名称对于每个文件都是唯一的。我想构建一个循环,加载第一个 .dta 文件,然后 merges 来自其他 35 个文件的“值”变量。任何帮助将不胜感激。
以下是来自 3 个 .dta 文件的示例数据:
Example 1:
input int rowid_ float value_ex_1
1 0
2 0
3 0
4 1
5 1
6 1
7 1
8 1
9 1
10 1
Example 2:
input int rowid_ float value_ex_2
1 1
2 0
3 0
4 1
5 1
6 0
7 0
8 0
9 0
10 0
Example 3:
input int rowid_ float value_ex_3
1 0
2 0
3 0
4 0
5 0
6 1
7 1
8 0
9 0
10 1
为了遍历所有 .dta files
,首先确保它们以逻辑顺序命名(即 example_1.dta、example_2.dta、example_3.dta 等)。
然后,您可以加载第一个数据集并使用 forvalues
循环遍历其他数据集:
cd "path/to/your/datasets"
use example_1.dta, clear
forvalues i = 2(1)35 {
merge 1:1 rowid_ using example_`i'.dta
drop _merge
}