gpt4 book ai didi

mysql - 有没有办法在不从数据库收集数据帧的情况下使用 dplyr::bind_rows ?

转载 作者:可可西里 更新时间:2023-11-01 08:24:58 24 4
gpt4 key购买 nike

有没有一种方法可以在一组数据帧上使用 bind_rows() 而无需首先从数据库中收集它们?

假设我定义了几个 dplyr 查询表:

mydatabase  <- src_mysql('database')
table1 <- tbl(mydatabase,"table1")
table2 <- tbl(mydatabase,"table3")

foo <- table1 %>% filter(id > 10) %>% select(id)
bar <- table2 %>% select(id)

我希望能够将 foo 和 bar 连接在一起——本质上,我希望在两个子查询上执行联合,而不必使用 SQL。但是,当我尝试这样做时,出现错误,因为我试图连接两个 tbl_sql 对象,而不是真实的数据框:

unioned_data_frame  <- bind_rows(foo,bar)

Error: incompatible sizes (1 != 8)

有什么建议吗?在这个玩具示例中,用 SQL 编写整个查询不会有问题,但当然,在现实生活中,foo 和 bar 通常要复杂得多。

最佳答案

使用 dplyr::union() 将执行 SQL union() 操作,尽管重要的是要注意 dplyr::union() 将删除重复的行(如 SQL 版本)。使用 dplyr::union_all() 保留重复行,如 bind_rows()

不幸的是,没有办法获得 bind_rows() 的好处,尤其是非常有用的 .id 参数。

关于mysql - 有没有办法在不从数据库收集数据帧的情况下使用 dplyr::bind_rows ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39709487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com