r - sparklyr 中的完整数据框

标签 r apache-spark dplyr tidyr sparklyr

我正在尝试在 sparklyr 中复制 tidyr:complete 函数。我有一个包含一些缺失值的数据框,我必须填写这些行。在 dplyr/tidyr 中我可以这样做:

data <- tibble(
  "id" = c(1,1,2,2),
  "dates" = c("2020-01-01", "2020-01-03", "2020-01-01", "2020-01-03"),
  "values" = c(3,4,7,8))

# A tibble: 4 x 3
     id dates      values
  <dbl> <chr>       <dbl>
1     1 2020-01-01      3
2     1 2020-01-03      4
3     2 2020-01-01      7
4     2 2020-01-03      8

data %>% 
  mutate(dates = as_date(dates)) %>% 
  group_by(id) %>% 
  complete(dates = seq.Date(min(dates), max(dates), by="day"))

# A tibble: 6 x 3
# Groups:   id [2]
     id dates      values
  <dbl> <date>      <dbl>
1     1 2020-01-01      3
2     1 2020-01-02     NA
3     1 2020-01-03      4
4     2 2020-01-01      7
5     2 2020-01-02     NA
6     2 2020-01-03      8

然而 complete 函数在 sparklyr 中不存在。

data_spark %>% 
  mutate(dates = as_date(dates)) %>% 
  group_by(id) %>% 
  complete(dates = seq.Date(min(dates), max(dates), by="day"))

Error in UseMethod("complete_") : 
no applicable method for 'complete_' applied to an object of class "c('tbl_spark', 'tbl_sql', 'tbl_lazy', 'tbl')"

是否有办法设置 UDF 或实现类似的结果?

谢谢

最佳答案

在引擎盖下 tidyr::complete 只是执行一个完整的连接,然后是可选的 NA 填充。您可以通过使用 sdf_copy_to 创建一个新的 sdf 来复制其效果,它只是开始和结束日期之间的单个列 seq.Date,然后执行 full_join 在它和你的数据集之间。

关于r - sparklyr 中的完整数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64397553/

相关文章:

c++ - 使用 Rcpp 将循环从 R 转换为 C++

r - R 上的 ggplot 问题 : code is correct but I keep receiving the error "Must request at least one color from a hue palette"

scala - Spark : DB connection per Spark RDD partition and do mapPartition

python - 如何从Python脚本/代码调用Spark2-submit命令

检索给定大小 k 的 n 项的所有可能组合,并在另一列上应用函数 sum

r - 如何在数据框中返回 "TRUE"/"FALSE"匹配项?

r - '['正确地执行了什么操作?

matrix - 如何使用 Spark 的 RDD 与向量执行矩阵点积

r - 使用 dplyr 中的列名向量在列中查找行最大值

r - 在 groupby 中分配楼层日期失败