【问题标题】:SparkR: Assign values of a column with conditionSparkR:为具有条件的列分配值
【发布时间】:2017-07-06 20:11:31
【问题描述】:

我想用特定条件替换列的值。

R 数据框示例:

df <- data.frame(id=c(1:7),value=c("a", "b", "c", "d", "e", "c", "c"))

我想将列值中的值“c”和“d”替换为“e”。

在R中,可以这样做

df[df$value %in% c("c","d"),]$value <- "e"

我尝试在 sparkR 中做同样的事情。尝试了ifelsewhen 功能,但无法给我想要的结果。

会不会遇到同样的问题?

【问题讨论】:

  • df$value &lt;- ifelse(df$value %in% c("c","d"), "e", df$value) 应该同样适用于Spark DataFrame
  • 它不起作用。我收到一个错误Error in rep(yes, length.out = length(ans)) : attempt to replicate an object of type 'environment'
  • 你运行的是什么 spark 版本?
  • 我正在运行 spark 1.6
  • 我认为这是一个已知的错误,已在 1.6.1 中修复

标签: r apache-spark sparkr


【解决方案1】:

mtoto 的第一条评论效果很好(spark 3.0.1),应该在回答中转换并接受。

df$value <- ifelse(df$value %in% c("c","d"), "e", df$value)

替换列中字符串的另一种有效的略有不同的方法可能如下:

df$value <- regexp_replace(df$value, "c", "e")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-19
    • 2021-05-16
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 2015-11-19
    相关资源
    最近更新 更多