我有一个包含名为 COL 的列的数据框,其结构如下:
VALUE1 ### VALUE2
以下代码正在运作
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')"
有没有其他方法可以达到我想要的效果,但是没有收集我的火花驱动器上的所有东西?
答案 0 :(得分:2)
Sparklyr 0.5版本刚刚released,它包含可以执行此操作的ft_regex_tokenizer()
function:
基于正则表达式的标记生成器,通过使用提取标记来提取标记 提供正则表达式模式以分割文本(默认)或重复 匹配正则表达式(如果间隙是假的)。
library(dplyr)
library(sparklyr)
ft_regex_tokenizer(input_DF, input.col = "COL", output.col = "ResultCols", pattern = '\\###')
拆分列&#34; ResultCols&#34;将是一个清单。
答案 1 :(得分:2)
您可以使用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")