如何替换具有相同前缀的多个变量的观察值?

How can I replace observations for multiple variables with the same prefix?

我正在尝试确定计时器变量的哪些观察值低于 15 秒。首先,我生成了变量 speed,并尝试用 1 替换所有以 timer 开头的小于 15 的变量的观察值。

gen speed = 0
replace speed = 1 if timer* <15

然而,Stata 告诉我,

timer* invalid name
r(198);

可能发生了什么?我不确定如何在此处附加我的 Stata 数据,对此的任何见解也将不胜感激。

Stata 标签 wiki 有大量关于如何 post 数据示例的详细信息。

只是 Stata 不支持您的语法而已。事实上,它甚至不清楚它可能意味着什么。

. clear

. set obs 1
number of observations (_N) was 0, now 1

. gen timer1 = 10

. gen timer2 = 20

. list

     +-----------------+
     | timer1   timer2 |
     |-----------------|
  1. |     10       20 |
     +-----------------+

. gen wanted1 = min(timer1, timer2) < 15

. gen wanted2 = max(timer1, timer2) < 15

. l

     +-------------------------------------+
     | timer1   timer2   wanted1   wanted2 |
     |-------------------------------------|
  1. |     10       20         1         0 |
     +-------------------------------------+

. 

一种猜测是,如果任何变量 timer* 小于 15,您需要一个指标,在这种情况下,您需要计算观察中这些变量的最小值,并将其与15. 另一种猜测是,如果所有变量 timer* 都小于 15,您需要一个指标为 1,在这种情况下,您首先需要计算观察值中的最大值。对于上面的简单示例,函数 min()max() 效果很好。对于 timer* 中包含更多变量的数据集,您会发现使用 egen 函数 rowmin()rowmax().

更方便

还有其他方法可以做到,还有其他更大胆的猜测,但我会就此打住。