如何替换具有相同前缀的多个变量的观察值?
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()
.
更方便
还有其他方法可以做到,还有其他更大胆的猜测,但我会就此打住。
我正在尝试确定计时器变量的哪些观察值低于 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()
.
还有其他方法可以做到,还有其他更大胆的猜测,但我会就此打住。