我正在使用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作为阅读器已有一段时间了,但这是我的第一个问题。希望它能遵守规则。
答案 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