2017-01-17 8 views
-1

Я хотел бы переименовать столбец, созданный с помощью group_by в dplyr. Созданное имя format(date2, "%Y-%m"), не очень полезно. Я пробовал несколько вещей. Я хотел новое имя, чтобы быть «yrMth»переименовать оператор group_by с помощью dplyr в R

df <- data.frame(Person = c(rep("abc",3), rep("eee", 5)), 
      date = c("4/1/2016", "4/3/2016", "4/12/2016", "5/3/2016", "5/4/2016","5/10/2016","5/6/2016", "5/11/2016"), 
      account = c("123","123","123","222","222","333","222","333"), stringsAsFactors = F) 

    df$date2 <- mdy(df$date) 

    df %>% 
     group_by(format(date2, "%Y-%m")) 

    Person  date account  date2 `format(date2, "%Y-%m")` 
    <chr>  <chr> <chr>  <date>     <chr> 
1 abc 4/1/2016  123 2016-04-01     2016-04 
2 abc 4/3/2016  123 2016-04-03     2016-04 
3 abc 4/12/2016  123 2016-04-12     2016-04 
4 eee 5/3/2016  222 2016-05-03     2016-05 
5 eee 5/4/2016  222 2016-05-04     2016-05 
6 eee 5/10/2016  333 2016-05-10     2016-05 
7 eee 5/6/2016  222 2016-05-06     2016-05 
8 eee 5/11/2016  333 2016-05-11     2016-05 

Следующий код не работает, любые идеи.

df %>% 
     mutate(yrMth = group_by(format(date2, "%Y-%m"))) 

    df %>% 
     rename(yrMth = group_by(format(date2, "%Y-%m"))) 
+0

Не большой dplyr, но вы не можете просто сначала мутировать, а затем group - 'df%>% mutate (yrMth = format (date2,"% Y-% m "))%>% group_by (yrMth)'? Я подожду и посмотрю, может ли какой-нибудь dplyr whiz показать лучший способ. – thelatemail

+2

Это то, что вы пытались сделать: 'df%>% group_by (yrMth = format (date2,"% Y-% m "))'. Это фактически дает тот же результат, что и 'df%>% mutate (yrMth = format (date2,"% Y-% m ")), за исключением того, что в первом случае кадр данных также имеет атрибут группировки. Но почему бы просто не форматировать дату так, как вы хотите, когда вы впервые создаете 'date2'? – eipi10

ответ

1

df<- group_by(df, date2) %>% mutate(yrMth = format(date2, "%Y-%m"))

Это отлично работает для меня

Но если вы хотите сделать это без создания каких-либо новый столбец, вы можете использовать следующие функции:

df<- mutate_at(df, vars(date), function(x){x = format(x, "%Y-%m"); return(x)}) 
+0

Нет необходимости в шаге группировки, если вы просто хотите добавить столбец 'yrMth'. – eipi10

+0

Согласовано. Я сделал это, чтобы воспроизвести то, что делает пользователь. –

+0

Я знаю, что я могу добавить новый столбец в фреймворк данных df. Я пытался сделать это, не создавая новый столбец, например, суммировать в dplyr. – user3482393

 Смежные вопросы

  • Нет связанных вопросов^_^