按一个变量排序,按另一个变量分组,select 第一行 SQL R 中的查询
Sort by one variable, group by another, and select first row in SQL Query in R
我需要在 SQL 中应用一个程序,该程序自 R 以来对我来说很容易,但在 SQL 中却非常曲折。
我需要按两个变量从高到低对数据进行排序,根据另一个变量进行分组,select每组中的第一项。
我将尝试从 R 传递给 SQL 的代码保留下来。不幸的是,dbplyr 包在尝试将一种语言转换为另一种语言时抛出一个错误:错误:first()
仅在窗口 (mutate()
) 上下文中可用
library(tidyverse)
library(dbplyr)
con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
copy_to(con, mtcars)
mtcars2 <- tbl(con, "mtcars")
mtcars2
mtcars2 %>%
arrange(-mpg,-disp) %>%
group_by(cyl) %>%
summarise(hp = first(hp)) %>%
show_query()
在我看来,DISTINCT ON 函数可以帮助我。
感谢您的帮助。
也许是以下?
library(tidyverse)
library(dbplyr)
con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
copy_to(con, mtcars)
mtcars2 <- tbl(con, "mtcars")
mtcars2 %>%
arrange(-mpg,-disp) %>%
group_by(cyl) %>%
mutate(hp = first(hp)) %>%
select(cyl, hp) %>%
distinct %>%
show_query
#> <SQL>
#> SELECT DISTINCT `cyl`, FIRST_VALUE(`hp`) OVER (PARTITION BY `cyl` ORDER BY -`mpg`, -`disp`) AS `hp`
#> FROM `mtcars`
#> ORDER BY -`mpg`, -`disp`
我需要在 SQL 中应用一个程序,该程序自 R 以来对我来说很容易,但在 SQL 中却非常曲折。
我需要按两个变量从高到低对数据进行排序,根据另一个变量进行分组,select每组中的第一项。
我将尝试从 R 传递给 SQL 的代码保留下来。不幸的是,dbplyr 包在尝试将一种语言转换为另一种语言时抛出一个错误:错误:first()
仅在窗口 (mutate()
) 上下文中可用
library(tidyverse)
library(dbplyr)
con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
copy_to(con, mtcars)
mtcars2 <- tbl(con, "mtcars")
mtcars2
mtcars2 %>%
arrange(-mpg,-disp) %>%
group_by(cyl) %>%
summarise(hp = first(hp)) %>%
show_query()
在我看来,DISTINCT ON 函数可以帮助我。
感谢您的帮助。
也许是以下?
library(tidyverse)
library(dbplyr)
con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
copy_to(con, mtcars)
mtcars2 <- tbl(con, "mtcars")
mtcars2 %>%
arrange(-mpg,-disp) %>%
group_by(cyl) %>%
mutate(hp = first(hp)) %>%
select(cyl, hp) %>%
distinct %>%
show_query
#> <SQL>
#> SELECT DISTINCT `cyl`, FIRST_VALUE(`hp`) OVER (PARTITION BY `cyl` ORDER BY -`mpg`, -`disp`) AS `hp`
#> FROM `mtcars`
#> ORDER BY -`mpg`, -`disp`