【问题标题】:Removing entry Date in sparkR删除 sparkR 中的条目日期
【发布时间】:2015-08-03 10:58:34
【问题描述】:

我有一个 DataFrame x。它包含 ID 和日期。所以

head(x)

给出 ID = 1 2 ... 和 Date = "2012-05-05" "2015-01-01" ...

我想创建一个新的数据集,其中删除所有日期高于“2013-01-01”+ P 的 ID。 P 是天,例如 P = 3 天。

在 sparkR 中我这样做

newdata <- filter(x, x$Date < as.Date(2013-01-01 + P) )

但是 sparkR 不接受这个。

【问题讨论】:

    标签: r sparkr


    【解决方案1】:

    当你说“sparkR 不接受这个”时,你应该详细说明。有错误吗?错误是什么?或者代码是否运行没有错误,但没有给出预期的结果?在这种情况下,它给出了什么?

    您有许多相当琐碎的语法错误。

    • 使用subset,而不是filter。提示:?filter 向您展示了这个函数“将线性过滤应用于单变量时间序列”,其中“过滤”并不是指“子集”意义上的过滤,而是“卷积”意义上的过滤
    • 当您as.Date 时,您的日期应该用引号括起来。将P 添加到日期,而不是在日期构造函数中。提示:

      as.Date(2013-01-01)
      Error in as.Date.numeric(2013 - 1 - 1) : 'origin' must be supplied
      

      请注意,这是尝试转换 '2013 - 1 - 1',即 number 2011。它显示 as.Date.numeric,而您要提供字符串“2013-01-01”。当你尝试这个时,它会起作用:

      as.Date("2013-01-01")
      # [1] "2013-01-01"
      

      然后添加您的 3 和 subset。顺便说一句,在subset 中,您不需要在Date 前面提供x$(参见?subset):

      subset(x, Date < as.Date("2013-01-01") + 3)
      

    故事的寓意:发布提问时收到的所有错误,尝试一点一点地处理您的代码(如果整行代码都不起作用,请尝试将其分解成最小的部分,这样您就可以一次解决一个问题)。

    【讨论】:

    • 感谢您的回复。在 sparkR 中,我必须在“子集”命令中写 x$Date 而不是 Date,否则无法找到“Date”。当我使用子集命令时,sparkR 告诉我“子集必须是合乎逻辑的”。当我使用“过滤器”命令时,它工作正常。对我来说,我不知道 as.Date("2013-01-01") + 3 将 3 添加到日期,而不是例如年。
    • 干杯,我没有意识到sparkR 覆盖了filter。 (这就是为什么发布您的问题时收到的错误消息很有用......)
    【解决方案2】:

    正如@mathematical.coffee 所建议的,您应该将 P 放在 as.Date 之外,但与他所说的相反,在 SparkR 中您应该使用过滤器,因此以下是工作代码:

    # Create x and set it to a data
    x2 <- data.frame(ID=c(1,2),
                     Date=c("2012-05-05","2015-01-01"))
    x2$Date <- as.Date(x2$Date)
    x <- createDataFrame(sqlContext,x2)
    
    # set P and compare the dates
    P <- 2
    newdata <- filter(x, x$Date < (as.Date("2013-01-01")+P) )
    
    # See the first results (in my example only one row)
    head(newdata)
    

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2016-08-26
      相关资源
      最近更新 更多