dplyr:如何防止转换显示“添加缺少的分组变量”消息?

时间:2018-06-26 15:47:29

标签: r dplyr

我正在使用dplyr的group_by对数据帧执行突变,然后进行转换。如何防止显示消息“添加缺少的分组变量:gender”?

可复制的示例:

library(tidyverse)

df <- data.frame(gender = rep(c("M", "F"), 10), score = rnorm(10, 5, 2))

df %>% 
  group_by(gender) %>%
  transmute(rank = rank(score), score = score) %>% arrange(score)

# Adding missing grouping variables: `gender`
# A tibble: 20 x 2
# Groups:   gender [2]
   gender  rank
   <fct>  <dbl>
 1 M       9.50
 2 F       1.50
 3 M       7.50
 4 F       3.50
 5 M       3.50
 6 F       5.50
 7 M       1.50
 8 F       7.50
 9 M       5.50
10 F       9.50
11 M       9.50
12 F       1.50
13 M       7.50
14 F       3.50
15 M       3.50
16 F       5.50
17 M       1.50
18 F       7.50
19 M       5.50
20 F       9.50


df %>% 
  group_by(gender) %>%
  transmute(gender, rank = rank(score))

# Error in mutate_impl(.data, dots) : 
#   Column `gender` can't be modified because it's a grouping variable

此代码是较大的Shiny应用程序的一部分。我知道我可以使用'suppressMessages()'阻止该消息,但是我正在寻找更具体的解决方案。

编辑:R版本3.3.2 dplyr_0.7.4

主题外:我已经使用stackoverflow作为阅读器已有一段时间了,但这是我的第一个问题。希望它能遵守规则。

1 个答案:

答案 0 :(得分:0)

我们可以在transmute之后使用group_by。唯一的问题是transmute中不需要分组变量,因为group_by将返回该列

#R 3.4.4
library(dplyr) # using dplyr_0.7.5 
df %>% 
  group_by(gender) %>%
  transmute(rank = rank(score))
# A tibble: 20 x 2
# Groups:   gender [2]
#   gender  rank
#   <fct>  <dbl>
# 1 M        3.5
# 2 F        1.5
# 3 M        7.5
# 4 F        7.5
# 5 M        9.5
# 6 F        9.5
# 7 M        1.5
# 8 F        5.5
# 9 M        5.5
#10 F        3.5
#11 M        3.5
#12 F        1.5
#13 M        7.5
#14 F        7.5
#15 M        9.5
#16 F        9.5
#17 M        1.5
#18 F        5.5
#19 M        5.5
#20 F        3.5