Stata
r
, u
, s
are dummies. I'm wondering if the following line is also generating dummy n
, if r
or u
or s ==1
, but just omit ==1
after r
, u
, s
?
generate byte n = r | u | s
R
Does it make a difference when we generate byte
and variable
in R or it's the same in R?
This answer addresses Stata questions only.
In Stata if r u s
are all 0, 1 variables then r | u | s
is also 0, 1 and will be 1 if any of those is 1 and 0 if and only if all are 0. So, it is equivalent to max(r, u, s)
.
But watch out if r u s
are 0, 1 or missing, then r | u | s
will also be 1 if any of those is missing. But max(r, u, s)
will be missing only if all of those are missing.
If missings are present, then you could use
* 1
gen n = r | u | s if !missing(r, u, s)
The result will be 1 if any argument r u s
is 1, 0 if all arguments are 0, and missing if any argument is missing.
* 2
gen n = (r == 1) | (u == 1) | (s == 1)
The result will be 1 if any argument is 1 and 0 otherwise. "Otherwise" is anything from all 0s to all missings.
* 3
gen n = inlist(1, r, u, s)
#3 is equivalent to #2.
In all cases, specifying byte
is good practice to save on storage, but not material otherwise.