Переименование итогового столбца внутри операций Redshift dplyr - PullRequest
0 голосов
/ 14 мая 2018

Я использую dplyr для выполнения определенных операций в Redshift, поэтому я не загружаю данные в память.

data <- tbl(conn, "customers") %>%
  filter(age >= 18)
subset <- data %>% 
  filter(eye_color != "brown") %>%
  group_by(gender, method, age, region) %>% 
  summarise(sum(purchases)) %>%  # will create a column called sum(purchases)
  full_join(data, by=c("region", "age", "method"))

Прямо сейчас, когда я смотрю на результирующий кадр данных, я вижу столбец с именем sum(purchases) и хочу переименовать его в purchases, который создаст столбцы purchase.x и purchase.y после слияния.

Большинство переименований, которые я прочитал до сих пор, имеют дело с кадрами данных, которые находятся в памяти, а не с кадрами данных, которые лениво оцениваются с помощью dbplyr. Я пытался использовать rename, rename_, rename_at, а также различные варианты select. Я также попробовал стратегии, изложенные здесь и здесь но не повезло

Есть ли способ переименовать sum(purchases). Единственный другой вариант, который у меня есть, это загрузить фрейм данных в память на определенном шаге

data <- tbl(conn, "customers") %>%
  filter(age >= 18)
subset <- data %>% 
  filter(eye_color != "brown") %>%
  group_by(gender, method, age, region) %>% 
  summarise(sum(purchases)) %>% 
loaded <- as.data.frame(subset)
# do some join here but in memory and not in Redshift
# full_join(data, by=c("region", "age", "method"))

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете назначить имена в summarise.У меня нет ваших данных, поэтому я не могу выполнить тройную проверку, но раньше я использовал это в своем коде при вызове summarise(n()).Что-то вроде ...

summarise(your_column_name = sum(purchases))

Вы также можете передать ему имя столбца с пробелами, вам просто нужно использовать backticks

summarise(`your column name` = sum(purchases))
...