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