gpt4 book ai didi

r - 相当于 sparkR 中的 na.locf

转载 作者:行者123 更新时间:2023-12-05 06:58:19 24 4
gpt4 key购买 nike

我是 R 的新手,试图在 sparkR 中重写 R 代码。对名为 costTbl(还有 5 个其他列)的 data.table 的操作之一是

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。但我无法使代码正常工作。

gapply 是正确的方法吗?还有其他方法可以实现这一目标吗?

最佳答案

从一些虚拟数据开始。

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 和适当的窗口规范一起使用。

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

关于r - 相当于 sparkR 中的 na.locf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64651903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com