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

时间:2018-05-13 11:05:58

标签: r recode

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

Entity import = new Entity(CrmImport.EntityLogicalName);
import.Attributes.Add(CrmImport.OptionSets.ModeCode, new OptionSetValue(CrmImport.OptionSets.ModeCodeValues.Option2_Update));
import.Attributes.Add(CrmImport.Fields.Name, "UpdateImport");
import.Id = service.Create(import);

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

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

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

如果参与者对5个问题(q1-q5)中的任何一个回答“是”,我想创建一个等于1的新变量z。所以我想编码它看起来像:z = 1如果q1 == 1或q2 == 1或q3 == 1或q4 == 1或q5 == 1.如果q1-q5都不等于1想要将z设置为0.然而,这也会带来如上所述的缺失值的问题。非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作。

首先,摆脱-99, -98NaN。我假设在问题中,当你写NAN时,你的意思是NaNNA值编码为NA

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

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

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