3
有没有办法在一组数据帧上使用bind_rows()
,而无需首先从数据库中收集它们?有没有办法在不从数据库中收集数据框的情况下使用dplyr :: 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查询方面的繁重工作,但它没有'bind_rows()'所具有的非常方便的.id参数。 也许我必须没有? – crazybilly
我想你想'dplyr :: union_all()'为了完美地复制'bind_rows()',但是,你可能不得不使用'mutate()'创建一个标识符的附加列,它是不幸的。 – HoHo