如何在 Stata 中的数字系列中断的地方添加一行

How to add a row where there is a disruption in series of numbers in Stata

我正在尝试格式化 table 40 个不同的年龄-种族-性别阶层以输入到 R-INLA 并注意到包括所有阶层很重要(即使它们不存在于一个县)。这些应该是零。但是,此时我的 table 只包含不为空的层的记录。我可以通过查看我的分层变量并找到系列 1 到 40 中的中断(在下图中用红色 x 标记)来识别每个县缺少分层的地方。

在这些地方(用红色x标记的)我需要添加缺失的行并填写相应的县代码,阶层代码,population=0,以及该阶层正确对应的种族,性别,年龄代码.

如果我能找到一种方法在带有图像中红色 X 的空格中添加一个空行,并正确地将分层代码(和县代码)分配给这些 empty/missing 行,我就是能够使用以下代码填充其余值:

如果阶层 = 4,则重新编码种族 = 1 & 性别 = 1 & 年龄 =4 ...等等

我想知道是否有一种方法可以使用 if 语句来添加缺失的行,该语句考虑到每个县代码应该有四十个阶层这一事实。如果这也可以填充正确的县代码和分层代码,那就太理想了!

Dataex 示例数据:

* Example generated by -dataex-. To install: ssc install dataex
clear
input float OID str5 fips_statecounty double population byte(race sex age) float strata
  1 ""       672 1 1 1  1
  2 ""      1048 1 1 2  2
  3 ""       883 1 1 3  3
  4 ""      1129 1 1 4  4
  5 ""       574 1 2 1  5
  6 ""       986 1 2 2  6
  7 ""       899 1 2 3  7
  8 ""      1820 1 2 4  8
  9 ""        96 2 1 1  9
 10 ""       142 2 1 2 10
 11 ""        81 2 1 3 11
 12 ""        99 2 1 4 12
 13 ""        71 2 2 1 13
 14 ""       125 2 2 2 14
 15 ""       103 2 2 3 15
 16 ""       162 2 2 4 16
 17 ""        31 3 1 1 17
 18 ""        32 3 1 2 18
 19 ""        18 3 1 3 19
 20 ""        31 3 1 4 20
 21 ""        22 3 2 1 21
 22 ""        28 3 2 2 22
 23 ""        28 3 2 3 23
 24 ""        44 3 2 4 24
 25 ""        20 4 1 1 25
 26 ""        24 4 1 2 26
 27 ""        21 4 1 3 27
 28 ""        43 4 1 4 28
 29 ""        19 4 2 1 29
 30 ""        26 4 2 2 30
 31 ""        24 4 2 3 31
 32 ""        58 4 2 4 32
 33 ""         6 5 1 1 33
 34 ""        11 5 1 2 34
 35 ""        13 5 1 3 35
 36 ""         7 5 1 4 36
 37 ""         7 5 2 1 37
 38 ""         9 5 2 2 38
 39 ""        10 5 2 3 39
 40 ""        11 5 2 4 40
 41 "01001"  239 1 1 1  1
 42 "01001"  464 1 1 2  2
 43 "01001"  314 1 1 3  3
 44 "01001"  232 1 1 4  4
 45 "01001"  284 1 2 1  5
 46 "01001"  580 1 2 2  6
 47 "01001"  392 1 2 3  7
 48 "01001"  440 1 2 4  8
 49 "01001"   41 2 1 1  9
 50 "01001"   38 2 1 2 10
 51 "01001"   23 2 1 3 11
 52 "01001"   26 2 1 4 12
 53 "01001"   34 2 2 1 13
 54 "01001"   52 2 2 2 14
 55 "01001"   40 2 2 3 15
 56 "01001"   50 2 2 4 16
 57 "01001"    4 3 1 1 17
 58 "01001"    2 3 1 2 18
 59 "01001"    3 3 1 3 19
 60 "01001"    6 3 2 1 21
 61 "01001"    4 3 2 2 22
 62 "01001"    6 3 2 3 23
 63 "01001"    4 3 2 4 24
 64 "01001"    1 4 1 4 28
 65 "01003" 1424 1 1 1  1
 66 "01003" 2415 1 1 2  2
 67 "01003" 1680 1 1 3  3
 68 "01003" 1823 1 1 4  4
 69 "01003" 1545 1 2 1  5
 70 "01003" 2592 1 2 2  6
 71 "01003" 1916 1 2 3  7
 72 "01003" 2527 1 2 4  8
 73 "01003"   68 2 1 1  9
 74 "01003"   82 2 1 2 10
 75 "01003"   52 2 1 3 11
 76 "01003"   54 2 1 4 12
 77 "01003"   72 2 2 1 13
 78 "01003"  129 2 2 2 14
 79 "01003"   81 2 2 3 15
 80 "01003"  106 2 2 4 16
 81 "01003"   10 3 1 1 17
 82 "01003"   14 3 1 2 18
 83 "01003"    8 3 1 3 19
 84 "01003"    4 3 1 4 20
 85 "01003"    8 3 2 1 21
 86 "01003"   14 3 2 2 22
 87 "01003"   17 3 2 3 23
 88 "01003"   10 3 2 4 24
 89 "01003"    4 4 1 1 25
 90 "01003"    1 4 1 3 27
 91 "01003"    2 4 1 4 28
 92 "01003"    2 4 2 1 29
 93 "01003"    3 4 2 2 30
 94 "01003"    4 4 2 3 31
 95 "01003"   10 4 2 4 32
 96 "01003"    5 5 1 1 33
 97 "01003"    4 5 1 2 34
 98 "01003"    3 5 1 3 35
 99 "01003"    5 5 1 4 36
100 "01003"    5 5 2 2 38
end
label values race race
label values sex sex

我对你上一个问题的回答

详细介绍了如何创建包含所有层的最小数据集。因此,您应该 merge 使用您的主要数据集,并用您的其他软件期望的任何内容替换缺失层上的缺失,看起来是零。

此时最明显的并发症是您需要考虑 county 变量。我看不到有关您的数据集中有多少个县的任何信息,这可能会影响实用性。您应该能够将准备工作分解为:首先,准备一个只有标识符的最小县数据集;然后 merge 具有完整的分层数据集。