【问题标题】:I am trying to create a new column that is conditional upon the contents of existing columns我正在尝试创建一个以现有列的内容为条件的新列
【发布时间】:2017-07-05 08:15:05
【问题描述】:

我正在尝试在我的数据框中创建几个新列,这些列取决于几个现有列的内容。

在伪代码中,参数基本上是“如果VariableA为1,而VariableB为2或VariableC为3,则令VariableD=1,如果不满足这些条件,则为0。

我尝试过使用 for 循环和 ifelse 语句,但没有成功。我知道我的命令的逻辑是正确的,但是在将其转换为 R 语法时出现了一些错误,这并不奇怪,因为我大约一周前才开始使用 R。

以下是我尝试过的简化版本...

Data$VariableD

它运行没有错误,但在检查变量D的内容时,所有单元格都用“NA”填充

这是一个使用类似数据集的示例,请注意第 1 行符合条件。 (我无法制作合适的表格来挽救我的生命,但我认为这是可以解释的。

|变量A|变量B|变量C|变量D|

|1|吉姆 | 2 | 4 |不适用 |

|2|汤姆 | 2 | 3 |不适用 |

|3|汤姆 | 3 | 4 |不知道 |

【问题讨论】:

  • 在我看来代码没有问题。您能否发布一个显示该问题的示例数据集?您可以使用dput 向我们展示数据。
  • 您的代码在逻辑上是正确的。您需要检查 R 中 &&& 运算符之间的区别。
  • 这不会引起你的问题,但你有 VariableA == 3 而不是 VariableC == 3
  • 我更新了问题以包含示例数据集并稍微更改代码示例以更准确地反映我正在尝试做的事情。

标签: r for-loop if-statement na


【解决方案1】:

您能否提供变量的类别?可能是类的问题...(例如,您将==1 用于变量A,但如果变量A 是类,则chr 应为== "1")。

能否请您提供完整的循环?

否则,请尝试:

Data$VariableD <- ifelse(Data$VariableA == 1 & (Data$VariableB == 2 | Data$VariableA == 3), 1, 0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多