Столбец формата в цепочке dplyr

У меня есть этот набор данных:

dat <- 
structure(list(date = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 
3L, 3L, 4L, 4L), .Label = c("3/31/2014", "4/1/2014", "4/2/2014", 
"4/3/2014"), class = "factor"), site = structure(c(1L, 2L, 1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L), .Label = c("a", "b"), class = "factor"), 
clicks = c(73L, 64L, 80L, 58L, 58L, 61L, 70L, 60L, 84L, 65L, 
77L), impressions = c(55817L, 78027L, 77017L, 68797L, 92437L, 
94259L, 88418L, 55420L, 69866L, 86767L, 92088L)), .Names = c("date", 
"site", "clicks", "impressions"), class = "data.frame", row.names = c(NA, 
-11L))

dat
        date site clicks impressions
1  3/31/2014    a     73       55817
2  3/31/2014    b     64       78027
3  3/31/2014    a     80       77017
4   4/1/2014    b     58       68797
...

Можно ли включить форматирование даты одного столбца в цепочку? (Я также пробовал использовать with, но он возвращает только столбец даты.)

library(dplyr)

> dat %.%
+   select(date, clicks, impressions) %.%
+   group_by(date) %.%
+   summarise(clicks = sum(clicks),
+             impressions = sum(impressions)) %.%
+   as.Date(Date, format = '%m/%d/%Y')
Error in as.Date.default(`__prev`, Date, format = "%m/%d/%Y") : 
  do not know how to convert '__prev' to class “Date”

Если я не включу форматирование в цепочку, это сработает. Я знаю, что это просто написать вне цепочки, но я хотел бы подтвердить, возможно ли это.

dat %.%
select(date, clicks, impressions) %.%
group_by(date) %.%
summarise(clicks = sum(clicks),
          impressions = sum(impressions))

dat$date <- as.Date(dat$Date, format = '%m/%d/%Y')

person maloneypatr    schedule 03.04.2014    source источник


Ответы (2)


Это то, что вы хотите?

dat %>%
  select(date, clicks, impressions) %>%
  group_by(date) %>%
  summarise(clicks = sum(clicks),
            impressions = sum(impressions)) %>%
  mutate(date = as.Date(date, format = '%m/%d/%Y'))
person Robert Krzyzanowski    schedule 03.04.2014
comment
Ага! Не могу поверить, что он смотрел мне в лицо ... Спасибо, Роберт! - person maloneypatr; 03.04.2014
comment
Привет, Роберт, я иногда сталкиваюсь с некоторыми проблемами Error: cannot modify grouping variable. Есть ли способ сбросить group_by без присвоения новой переменной группе? - person maloneypatr; 10.04.2014
comment
используйте ungroup() для сброса группировки - person fuadj; 29.11.2017

Иногда сообщение Error: cannot modify grouping variable появляется, когда вы пытаетесь запустить group_by() операции над чем-то, что уже было сгруппировано. Вы можете сначала попробовать включить ungroup. В синтаксисе ответа Роберта:

dat %>%
  ungroup %>% 
  select(date, clicks, impressions) %>%
  group_by(date) %>%
  summarize(clicks      = sum(clicks),
            impressions = sum(impressions)) %>%
  mutate(date = as.Date(date, format = "%m/%d/%Y"))
person Pat W.    schedule 20.11.2014