在 R 中创建变量 - 两个问题

Creating variables in R- two issues

我有两个关于在 R 中创建新变量的基本问题。我将展示一些代码,希望有人能帮助回答这些问题!

df0$new <- ifelse(df0$old=="yes",1,0)

在这段代码中,我创建了一个名为 "new" 的新变量,如果变量 "old" 等于 yes 或等于 0,则该变量等于 1。但是在变量 "old" 我缺少数据(表示为 -99、-98、NAN)。那么我该如何解释缺失值呢?

第二个问题是关于使用"OR"语句。

df0$z <- ifelse(df0$x1=="yes",1,0 | )

如果参与者回答 "yes" 5 个问题 (q1-q5) 中的任何一个,我想创建一个等于 1 的新变量 z。所以我想把它编码成这样:z = 1 if q1 ==1 OR q2 == 1 OR q3 == 1 OR q4 == 1 OR q5 == 1. If none of q1-q5等于 1 而不是我想将 z 设置为等于 0。但是,这也会带来上述缺失值的问题。非常感谢!

您可以执行如下操作。

首先,删除 -99, -98NaN。我假设当您在问题中写 NAN 时,您的意思是 NaN.
NA 值编码为 NA.

is.na(df0$old) <- (df0$old %in% c(-99, -98)) | is.nan(df0$old)

现在,请注意 FALSE/TRUE 被编码为 0/1 并将逻辑结果强制为 class integer.

df0$new <- as.integer(df0$old == "yes")
df0$z <- as.integer(q1 == "yes" | q2 == "yes" | q3 == "yes" | q4 == "yes" | q5 == "yes")

第一部分的另一个解决方案。

library(dplyr) #because of left_join function
df1 <- data.frame(old = c("yes", "no"), new = c(1, 0))
df0 <- left_join(df0, df1)