使用 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"))
我有一个数据框 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"))