为什么在使用ifelse语句时R会产生隐藏的重复列?

时间:2019-06-24 20:02:52

标签: r if-statement

就背景而言,我正在尝试确定某人在前/后评估中评估的至少五个因素中的至少一项是否总体得分有所提高。

我创建了五列“正”或“非”值,以确定因素得分是增加还是减少。针对每个因素重复以下代码: MSWC$Factor1 <- MSWC$Post_F1.y - MSWC$Pre_F1.x MSWC$Factor1_ <- ifelse(MSWC$Factor1 > 0, "Positive", "Same/Neg")

由于某些数据的前后数据不完整,因此缺少值。

使用此代码,我创建了一个列来确定行中是否有一个肯定的因素: MSWC$Overall <- ifelse(MSWC$Factor1_ == "Positive" | MSWC$Factor2_ == "Positive" | MSWC$Factor3_ == "Positive" | MSWC$Factor4_ == "Positive" | MSWC$Factor5_ == "Positive", "Positive", "Same/Neg")

输出:

Factor1   Factor2   Factor3   Factor4  Factor5   Overall
Positive  Not       Not       NA       Positive  Positive
Not       NA        NA        Positive Not       Positive
Not       Not       Not       Not      Not       Not
NA        NA        NA        NA       NA        NA
Not       NA        NA        Not      Not       NA

该代码显然不是完美的,因为它不对没有正值的行进行编码,因此该语句创建了一个列来查找所有缺失值的行。

MSWC$Meh <- rowSums(ifelse(is.na(MSWC[,16:24]) == FALSE, 1, 0))

此语句进入第二列,以编码应列为“不”的值。

MSWC$Outcomess <- ifelse(is.na(MSWC$Overall_Positive) & MSWC$Meh > 0, "Same/Neg", MSWC$Overall_Positive)

此列恰好创建了我需要的内容,并修复了最后一行以显得完整:

Factor1   Factor2   Factor3   Factor4  Factor5   Overall   Outcomess
Positive  Not       Not       NA       Positive  Positive  Positive
Not       NA        NA        Positive Not       Positive  Positive
Not       Not       Not       Not      Not       Not       Not
NA        NA        NA        NA       NA        NA        NA
Not       NA        NA        Not      Not       NA        Not

问题是,现在导出此数据时,我得到了五个重复的“总体”列和五个重复的“结果”列(每个因素一个)。它们在excel中很容易删除,但不会在环境中显示,因此我无法使用MSWC[,-c(5:10)]语句将其删除。

为什么我的数据会发生这种情况?

0 个答案:

没有答案