根据 R 中其他列的值创建列

Creating column based on values of other columns in R

提问人:Chantal 提问时间:1/24/2023 更新时间:1/24/2023 访问量:37

问:

我正在尝试根据另外两列($Condition 和 $Response)中的值在数据框中创建一个新列 ($Correct)。

我意识到有多种方法可以实现这一目标(此后我使用了另一种方法),但我对以下方法不起作用的原因很感兴趣。

training_data.df$Correct<- 0

training_data.df$Correct[training_data.df$Condition==2 & training_data.df$Response==1] <- 1

training_data.df$Correct[(training_data.df$Condition==1|3) & training_data.df$Response==2] <- 1

此方法在输出(新$Correct列)中生成正确的值,但 $Condition==2 和 $Response==2(值“1”打印在$Correct列而不是“0”)的情况除外。

这行代码可以单独正常工作,但不能与 $Condition==1|3 的另一行(最后一行)结合使用。

谁能解释为什么会发生这种情况?

r 布尔逻辑

评论

0赞 amccnnll 1/24/2023
没有真正深入研究它(对不起)只是抛出想法 - 你厌倦了使用 ||&&所以它不会矢量化操作?

答:

0赞 PGSA 1/24/2023 #1
training_data.df$Condition==1|3

读作:

  • “(training_data.df$Condition 等于 1)”

  • “三”。

“(training_data.df$Condition is equal to 1)” 可以是 TRUE 或 FALSE。

“三”没有那么多。

而我认为你的意思是: “training_data.df$Condition 等于(1 或 3)”。

这将是 或 .(training_data.df$Condition==1 | training_data.df$Condition==3)training_data.df$Condition %in% c(1,3)