dplyr: Как запретить трансмуту показывать сообщение «добавление отсутствующих переменных группировки»? - PullRequest
0 голосов
/ 26 июня 2018

Я выполняю мутацию на фрейме данных, используя 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 голосов
/ 26 июня 2018

Мы можем использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...