【发布时间】:2015-09-05 14:05:21
【问题描述】:
我有一个如下所示的数据集:
id test
1 A
2 A
3 A
. B
. B
. B
我想用与其id对应的整数序列来填充缺失值:
id test
1 A
2 A
3 A
1 B
2 B
3 B
我最初考虑使用forvalues循环如下:
forvalues i=1/3 {
replace id = `i' if (id == .)
}
但这(出于显而易见的原因)只是在第一次迭代期间用1 替换所有缺失值。
然后我考虑通过行索引将循环限制为数据的子集(如在 R 中),但 Stata(?) 似乎不存在此功能:
forvalues i=1/3 {
replace id[3+`i'] = `i' if (id == .)
}
如何在 Stata 中完成这个看似简单的任务?
【问题讨论】:
-
这是对围绕您的数据的假设的非常稀疏的描述。每次测试总是有 3 个 id 吗?测试的不同值是否组合在一起,或者是否有多批具有相同测试值的观察?是否有另一个变量可以确定相同测试值的 3 个(或其他)观察值出现的顺序?您确定 id 的缺失值是全有或全无,没有一个 test 值仅缺失 3 个(或其他)值中的 1 个?
标签: subset sequence stata stata-macros