首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-使用sqldf连接数据帧时列过多

R-使用sqldf连接数据帧时列过多
EN

Stack Overflow用户
提问于 2021-11-15 00:43:36
回答 1查看 63关注 0票数 0

我在试着把两个数据帧合并成一个。第一个df是4682列的acutedm11,第二个是4903列的gwlfullflattened22。我不能在这里发布数据,因为它太大了,而且包含敏感信息。我正在尝试基于mrn=mrn_G和date difference <= 30合并这两个dfs

代码:

代码语言:javascript
复制
library(sqldf)
acutedm3 <- sqldf::sqldf("
    select acutedm11.*, gwlfullflattened22.*
    from acutedm11
       left join gwlfullflattened22 on acutedm11.mrn = gwlfullflattened22.mrn_G
        and gwlfullflattened22.EncounterDate_G between acutedm11.Date_m30 and acutedm11.Date_p30") %>%
  select(-Date_m30, -Date_p30)

错误:Error: too many columns on acutedm11

有没有更好的合并/连接数据帧的方法?

EN

回答 1

Stack Overflow用户

发布于 2021-11-15 02:33:51

  1. 最大列数是SQLite (包含在RSQLite包中)中的编译时参数。您可以将限制重新设置为更高的值,并重新构建该包。有关更多信息,请参阅:Maximum number of columns in a table for sqlite

  1. 还支持4种不同的后端:SQLiteH2MySQLPostgreSQL。试试其他的一个。

例如,使用H2不会给我任何错误。

代码语言:javascript
复制
library(RH2)
library(sqldf)

nr1 <- 100
nc1 <- 4682 
df1 <- as.data.frame(matrix(seq_len(nr1*nc1), nr1))

nr2 <- 100
nc2 <- 4903
df2 <- as.data.frame(matrix(seq_len(nr2*nc2), nr2))

res <- sqldf("select * from df1 a
       left join df2 b on a.V1 = b.V1
        and a.V2 between b.V3 and b.V4")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69968371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档