在 SparkR 中,我们如何根据对现有列的逻辑操作添加新列?
In SparkR, how can we add a new column based on logical operations on an existing column?
我可以轻松做到这一点
employees$salarynew = employees$Salary * 2
employees$sale_chance <- (employee$Salary > 2000)
但是如果我想要这样的东西
employees$sale_chance_1 <- if (employees$Salary > 2000) 'high' else 'low'
报错
Error in if (employees$Salary > 2000) "high" else "low" :
argument is not interpretable as logical
这也给出了同样的错误
emp1 <- withColumn(employees, "sale_prob", {if (employees$Salary > 2000) 'high' else 'low'})
如评论中所建议
emp$sale = ifelse(emp$Salary > 2000, 'high', 'low')
此外,这适用于更复杂的表达式
emp1 <- selectExpr(emp, "case Salary>2000 when TRUE then 'high' else 'low' end as sale_prob")
不应该是这样吗ifelse(employees$Salary > 2000, 'high', 'low')
我可以轻松做到这一点
employees$salarynew = employees$Salary * 2
employees$sale_chance <- (employee$Salary > 2000)
但是如果我想要这样的东西
employees$sale_chance_1 <- if (employees$Salary > 2000) 'high' else 'low'
报错
Error in if (employees$Salary > 2000) "high" else "low" :
argument is not interpretable as logical
这也给出了同样的错误
emp1 <- withColumn(employees, "sale_prob", {if (employees$Salary > 2000) 'high' else 'low'})
如评论中所建议
emp$sale = ifelse(emp$Salary > 2000, 'high', 'low')
此外,这适用于更复杂的表达式
emp1 <- selectExpr(emp, "case Salary>2000 when TRUE then 'high' else 'low' end as sale_prob")
不应该是这样吗ifelse(employees$Salary > 2000, 'high', 'low')