如何在r中将一个SQL列拆分为多个列

如何在r中将一个SQL列拆分为多个列,sql,r,split,Sql,R,Split,我通过R中的dbplyr::memdb_frame()创建了一个tbl_SQLiteConnection对象 我试试这样的 sq <- paste0('SELECT split_part(ch,"a",1) FROM (',sql_render(tb),')') tbl(tb$src$con,sql(sq)) sq这是否有效: library(dplyr) library(tidyr) tb %>% separate(col = ch

我通过R中的dbplyr::memdb_frame()创建了一个tbl_SQLiteConnection对象

我试试这样的

sq <- paste0('SELECT split_part(ch,"a",1)
             FROM (',sql_render(tb),')')

tbl(tb$src$con,sql(sq))
sq这是否有效:

library(dplyr)
library(tidyr)
tb %>% separate(col = ch, into = c('ch1','ch2'), sep = 'a')
  ch1 ch2 cq
1   1   1  1
2   2   3  2

如果问题是如何使用R中的SQLite select语句将数据帧中的指示列一分为二,那么下面的select语句将使用SQLite的and函数

library(sqldf)

tb <- data.frame(ch = c('1a1', '2a3'), cq = c(1, 2))

sqldf("
  select 
    substr(ch, 1, instr(ch, 'a') - 1) as ch1,
    substr(ch, instr(ch, 'a') + 1) as ch2,
    cq
  from tb")

你能添加你期望的输出吗!我在第一个答案中添加了这个问题是如何拆分一个SQL列,而不是按SQL语法拆分一个dataframe列。这不起作用,这个命令对tibble很有效,但在这里不起作用<代码>UseMethod中的错误(“separate”):没有适用于“separate”的方法应用于类“c”的对象(“tbl\U SQLiteConnection”、“tbl\U dbi”、“tbl\U sql”、“tbl\U lazy”、“tbl”)”
尝试
tb%>%collect()%%>%separate(…)
?谢谢!collect()与as相同。数据。框架,它不是sql,而是数据。框架
library(dplyr)
library(tidyr)
tb %>% separate(col = ch, into = c('ch1','ch2'), sep = 'a')
  ch1 ch2 cq
1   1   1  1
2   2   3  2
library(sqldf)

tb <- data.frame(ch = c('1a1', '2a3'), cq = c(1, 2))

sqldf("
  select 
    substr(ch, 1, instr(ch, 'a') - 1) as ch1,
    substr(ch, instr(ch, 'a') + 1) as ch2,
    cq
  from tb")
  ch1 ch2 cq
1   1   1  1
2   2   3  2