Как не заставить dplyr mutate вычислять для отсутствующей группы - PullRequest
1 голос
/ 14 июня 2019

У меня есть данные, которые выглядят так:

df=data.frame(a=1:6,b=rep(c("one","two"),each=3))
df[2,2]<-NA

Я хочу вычислить среднее значение каждой группы для каждой строки, например:

df %>% group_by(b) %>% mutate(mean=mean(a))

Проблема в том, что R просматриваетАН как группа.Желаемый результат будет

среднее = c (2, NA, 2,5,5,5).

Попытка :

df %>% group_by(b) %>% mutate(mean=if_else(b==NA,NA,mean(a)))

но это выдает ошибку

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Попробуйте

df %>% group_by(b) %>% mutate(mean=mean(a)) %>% mutate(mean = if_else(is.na(b), NA_real_, mean))
0 голосов
/ 14 июня 2019

Если вы хотите избежать сообщений об ошибках:

library(hablar)

df %>% 
  convert(chr(b)) %>% 
  group_by(b) %>% 
  mutate(mean = if_else_(!is.na(b), mean(a), NA))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...