在 Stata 与 R 中生成假人

Generate dummies in Stata vs. in R

Stata

rus 是假人。我想知道如果 rus ==1,以下行是否也生成虚拟 n,但只是在 [=10= 之后省略 ==1 ], u, s?

generate byte n = r | u | s

R

当我们在 R 中生成 bytevariable 或在 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 否则。