在 Stata 与 R 中生成假人
Generate dummies in Stata vs. in R
Stata
r
、u
、s
是假人。我想知道如果 r
或 u
或 s ==1
,以下行是否也生成虚拟 n
,但只是在 [=10= 之后省略 ==1
], u
, s
?
generate byte n = r | u | s
R
当我们在 R 中生成 byte
和 variable
或在 R 中生成相同时有什么不同吗?
此答案仅解决 Stata 问题。
在 Stata 中,如果 r u s
都是 0, 1 变量,那么 r | u | s
也是 0, 1 并且如果其中任何一个为 1 则为 1,当且仅当所有为 0 时为 0。所以,它相当于 max(r, u, s)
.
但是请注意,如果 r u s
为 0、1 或缺失,那么 r | u | s
也将是 1,如果其中任何一个缺失。但是 max(r, u, s)
只有在所有这些都丢失的情况下才会丢失。
如果存在缺失,那么您可以使用
* 1
gen n = r | u | s if !missing(r, u, s)
如果任何参数 r u s
为 1,结果将为 1,如果所有参数为 0,则结果为 0,如果缺少任何参数,则结果为 missing。
* 2
gen n = (r == 1) | (u == 1) | (s == 1)
如果任何参数为 1,结果将为 1,否则为 0。 “否则”是从全 0 到全缺失的任何值。
* 3
gen n = inlist(1, r, u, s)
#3 等同于#2。
在所有情况下,指定 byte
是节省存储空间的好习惯,但不指定 material 否则。
Stata
r
、u
、s
是假人。我想知道如果 r
或 u
或 s ==1
,以下行是否也生成虚拟 n
,但只是在 [=10= 之后省略 ==1
], u
, s
?
generate byte n = r | u | s
R
当我们在 R 中生成 byte
和 variable
或在 R 中生成相同时有什么不同吗?
此答案仅解决 Stata 问题。
在 Stata 中,如果 r u s
都是 0, 1 变量,那么 r | u | s
也是 0, 1 并且如果其中任何一个为 1 则为 1,当且仅当所有为 0 时为 0。所以,它相当于 max(r, u, s)
.
但是请注意,如果 r u s
为 0、1 或缺失,那么 r | u | s
也将是 1,如果其中任何一个缺失。但是 max(r, u, s)
只有在所有这些都丢失的情况下才会丢失。
如果存在缺失,那么您可以使用
* 1
gen n = r | u | s if !missing(r, u, s)
如果任何参数 r u s
为 1,结果将为 1,如果所有参数为 0,则结果为 0,如果缺少任何参数,则结果为 missing。
* 2
gen n = (r == 1) | (u == 1) | (s == 1)
如果任何参数为 1,结果将为 1,否则为 0。 “否则”是从全 0 到全缺失的任何值。
* 3
gen n = inlist(1, r, u, s)
#3 等同于#2。
在所有情况下,指定 byte
是节省存储空间的好习惯,但不指定 material 否则。