使用 R 中的逻辑条件填充列的问题

Problem filling a column using logical conditions in R

我有一个数据框 dfpp,其中包含列 dfpp$Block,包含“创意”或“非创意”和 dfpp$MeanOriginell,包含 0 到 99 之间的值。

我正在尝试创建一个标签为“创意”、“非创意”和“失败”的新专栏。

“创意”应应用于 dfpp$Block 为“创意”且 dfpp$MeanOriginell 大于 49 的所有行。

“非创意”应应用于 dfpp$Block 为“非创意”且 dfpp$MeanOriginell 小于 49 的所有行。

“失败”应应用于所有其他行。

我已尝试使用以下代码执行此操作:

dfpp$Success <- factor(ifelse(dfpp$Block=="creative" && dfpp$MeanOriginell > 49, "creative",
                                  ifelse(dfpp$Block=="non-creative" && dfpp$MeanOriginell < 49, "non-creative", "fail")),
                           levels=c("creative", "non-creative", "fail"))

这没有按预期工作。所有内容都归入“失败”类别,因此 dfpp$Success 中“非创意”和“创意”的出现次数为零。

我收到以下警告:

1: In dfpp$Block == "creative" && dfpp$MeanOriginell > 49 :
  'length(x) = 9453 > 1' in coercion to 'logical(1)'
2: In dfpp$Block == "creative" && dfpp$MeanOriginell > 49 :
  'length(x) = 9453 > 1' in coercion to 'logical(1)'
3: In dfpp$Block == "non-creative" && dfpp$MeanOriginell < 49 :
  'length(x) = 9453 > 1' in coercion to 'logical(1)'

我做错了什么?

你可以一步一步来。

# Initially all the values as "fail"
  dfpp$success <- "fail"
# Condition to be "creative"  
  dfpp$success[dfpp$Block=="creative" & dfpp$MeanOriginell > 49] <- "creative"
# Condition to be "non-creative"  
  dfpp$success[dfpp$Block=="non-creative" & dfpp$MeanOriginell <49] <- "non-creative"

如果您将 && 的两个实例替换为 &,OP 中的代码将按预期工作,如下所示:

dfpp$Success <- factor(ifelse(dfpp$Block=="creative" & dfpp$MeanOriginell > 49, "creative",
                              ifelse(dfpp$Block=="non-creative" & dfpp$MeanOriginell < 49, "non-creative", "fail")),
                       levels=c("creative", "non-creative", "fail"))