在 R 中使用 dplyr 重命名 group_by 语句

use*_*393 2 r rename dplyr

我想重命名在 dplyr 中使用 group_by 创建的列。创建的名称format(date2, "%Y-%m")不是很有帮助。我已经尝试了几件事。我希望新名称为“yrMth”

    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
Run Code Online (Sandbox Code Playgroud)

以下代码不起作用,任何想法。

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

    df %>%
      rename( yrMth = group_by(format(date2, "%Y-%m")))
Run Code Online (Sandbox Code Playgroud)

小智 7

无需使用mutaterename。正如 eipi10\xc2\xb4s 评论所述,只需执行以下操作即可轻松实现:

\n\n
df %>% \n  group_by(yrMth = format(date2, "%Y-%m"))\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您要动态命名变量,这将是一个选项:

\n\n
name <- "yrMth2"\n\ndf %>% \n  group_by(!!name := get(format(date2, "%Y-%m")) )\n
Run Code Online (Sandbox Code Playgroud)\n