首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >na.locf在sparkR中的等价性

na.locf在sparkR中的等价性
EN

Stack Overflow用户
提问于 2020-11-02 19:16:22
回答 2查看 128关注 0票数 3

我是新的R试图重写一个R代码在sparkR。data.table上的一个名为costTbl的操作(它有另外5个列)是

代码语言:javascript
复制
costTbl[,cost:=na.locf(cost,na.rm=FALSE),by=product_id]
costTbl[,cost:=na.locf(cost,na.rm=FALSE, fromLast=TRUE),by=product_id]

我无法在sparkR中找到相应的操作。我认为可以通过对product_id上的df进行分组并执行此操作来使用gapply。但我无法使代码工作。

采用正确的方法吗?还有其他方法来实现这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-13 17:20:29

我终于能够使用SparkR UDF来使用现有的本地R代码执行locf。我们可以为这个用例使用gapply,方法是在列product_id上分组我的数据。

在这里分享了我的发现:https://shbhmrzd.medium.com/stl-and-holt-from-r-to-sparkr-1815bacfe1cc

票数 0
EN

Stack Overflow用户

发布于 2020-11-05 12:58:46

从一些虚拟的数据开始。

代码语言:javascript
复制
library(SparkR)
library(magrittr)

df <- createDataFrame(data.frame(
  time = c(1, 2, 3, 1, 2, 3),
  product_id = c(1, 1, 1, 2, 2, 2),
  cost = c(1, 2, NA, NA, 2, NA)
))

lastna.rm = TRUE和适当的窗口规范结合使用。

代码语言:javascript
复制
df %>%
  mutate(
    cost = over(
      last("cost", na.rm = TRUE),
      windowPartitionBy("product_id") %>% orderBy("time") %>% rowsBetween(Window.unboundedPreceding, 0)
    )
  ) %>%
  collect()
#>   time product_id cost locf_cost
#> 1    1          1    1         1
#> 2    2          1    2         2
#> 3    3          1   NA         2
#> 4    1          2   NA        NA
#> 5    2          2    2         2
#> 6    3          2   NA         2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64651903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档