2

我有一个数据框,其中包含一个名为COL的列,其结构如下:

价值1###价值2

以下代码正在运行

library(sparklyr)
library(tidyr)
library(dplyr)
mParams<- collect(filter(input_DF, TYPE == ('MIN')))
mParams<- separate(mParams, COL, c('col1','col2'), '\\###', remove=FALSE)

如果我删除collect,我会收到此错误:

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

有没有其他方法可以实现我想要的,但没有收集我的火花驱动器上的所有东西?

4

2 回答 2

3

您可以使用 ft_regex_tokenizer 后跟 sdf_separate_column。

ft_regex_tokenizer 将基于正则表达式将列拆分为向量类型。sdf_separate_column 会将其拆分为多列。

mydf %>% 
    ft_regex_tokenizer(input_col="mycolumn", output_col="mycolumnSplit", pattern=";") %>% 
    sdf_separate_column("mycolumnSplit", into=c("column1", "column2")

更新:在最新版本的 sparklyr 中,参数 input.col 和 output.col 已分别重命名为 input_col 和 output_col。

于 2018-04-04T10:00:09.577 回答
2

Sparklyr 0.5 版刚刚发布,它包含可以做到这一点的ft_regex_tokenizer() 功能:

一个基于正则表达式的分词器,通过使用提供的正则表达式模式来拆分文本(默认)或重复匹配正则表达式(如果 gaps 为 false)来提取令牌。

library(dplyr)
library(sparklyr)
ft_regex_tokenizer(input_DF, input_col = "COL", output_col = "ResultCols", pattern = '\\###')

拆分列“ResultCols”将是一个列表。

于 2017-01-25T08:28:48.337 回答