【发布时间】:2022-01-22 17:21:05
【问题描述】:
状态
r、u、s 是假人。我想知道以下行是否也在生成虚拟n,如果r 或u 或s ==1,但只是在r、u、s 之后省略==1? p>
generate byte n = r | u | s
R
当我们在 R 中生成 byte 和 variable 或者在 R 中生成相同时,它会有所不同吗?
【问题讨论】:
标签: stata dummy-variable
状态
r、u、s 是假人。我想知道以下行是否也在生成虚拟n,如果r 或u 或s ==1,但只是在r、u、s 之后省略==1? p>
generate byte n = r | u | s
R
当我们在 R 中生成 byte 和 variable 或者在 R 中生成相同时,它会有所不同吗?
【问题讨论】:
标签: stata dummy-variable
此答案仅针对 Stata 问题。
在 Stata 中,如果 r u s 都是 0、1 个变量,那么 r | u | s 也是 0、1 并且如果其中任何一个是 1 和 0,则当且仅当所有变量都为 0 时才会为 1。所以,它相当于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,如果缺少任何参数,则结果将丢失。
* 2
gen n = (r == 1) | (u == 1) | (s == 1)
如果任何参数为 1,则结果将为 1,否则为 0。 “否则”是从全 0 到全缺失的任何内容。
* 3
gen n = inlist(1, r, u, s)
#3 等价于 #2。
在所有情况下,指定 byte 是节省存储空间的好习惯,但在其他情况下则不是很重要。
【讨论】: