Skip to content

Conversation

@apalacio9502
Copy link

Hi @hadley and @DavisVaughan,

This merge request seeks to support the new .keep = "transmute" argument in the mutate, based on the dplyr pull request tidyverse/dplyr#7038

Below I leave an example comparing transmute with mutate(.keep = "transmute")

con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")

example <- tibble(
  group = c("a", "a", "b", "b"),
  old = c(1, 2, 3, 4)
)

example <- copy_to(con, example)

# transmute --------------------------------------------------------------------

example %>% transmute(
  group,
  new = old * 2,
  old
) %>% 
  show_query()

# <SQL>
SELECT `group`, `old` * 2.0 AS `new`, `old`
FROM `example`

# mutate(.keep = "transmute") --------------------------------------------------

example %>% mutate(
  .keep = "transmute",
  group,
  new = old * 2,
  old
) %>% 
  show_query()

# <SQL>
SELECT `group`, `old` * 2.0 AS `new`, `old`
FROM `example`

# group_by + transmute ---------------------------------------------------------

example %>% 
  group_by(group) %>% 
  transmute(
    new = sum(old,na.rm = TRUE),
    old
  ) %>% 
  ungroup() %>% 
  show_query()

# <SQL>
SELECT `group`, SUM(`old`) OVER (PARTITION BY `group`) AS `new`, `old`
FROM `example`

# group_by + mutate(.keep = "transmute") ---------------------------------------

example %>% 
  group_by(group) %>% 
  mutate(
    .keep = "transmute",
    new = sum(old,na.rm = TRUE),
    old
  ) %>% 
  ungroup() %>% 
  show_query()

# <SQL>
SELECT `group`, SUM(`old`) OVER (PARTITION BY `group`) AS `new`, `old`
FROM `example`

# mutate(.keep = "transmute", by = ...) ----------------------------------------

example %>%  
  mutate(
    .keep = "transmute",
    .by = "group",
    new = sum(old,na.rm = TRUE),
    old
  ) %>% 
  show_query()

# <SQL>
SELECT `group`, SUM(`old`) OVER (PARTITION BY `group`) AS `new`, `old`
FROM `example`

Regards,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant