Замените значения NA минимальным наблюдаемым значением на группу [duplicate]

Он вызывает оценку нескольких операторов, но использует только последнее значение в качестве результирующего значения (rvalue, я думаю).

Итак ...

int f() { return 7; }
int g() { return 8; }

int x = (printf("assigning x"), f(), g() );

should результат: x устанавливается в 8.

7
задан Sheldon 13 October 2014 в 09:59
поделиться

2 ответа

Попробуйте

  shop.data %>% 
             group_by(hour) %>% 
             mutate(profit= ifelse(is.na(profit), mean(profit, na.rm=TRUE), profit))

  #   day hour profit
  #1   1    8    100
  #2   1   16    200
  #3   2    8     50
  #4   2   16     60
  #5   3    8     75
  #6   3   16    130

Или вы можете использовать replace

  shop.data %>% 
            group_by(hour) %>%
            mutate(profit= replace(profit, is.na(profit), mean(profit, na.rm=TRUE)))
16
ответ дан akrun 22 August 2018 в 23:47
поделиться
  • 1
    Я пришел сюда, потому что не заметил, что забыл ключ: na.rm = TRUE – jbkunst 14 November 2017 в 16:42

A (менее элегантный) подход с базовыми функциями:

transform(shop.data, 
          profit = ifelse(is.na(profit), 
                          ave(profit, hour, FUN = function(x) mean(x, na.rm = TRUE)), 
                          profit))

#   day hour profit
# 1   1    8    100
# 2   1   16    200
# 3   2    8     50
# 4   2   16     60
# 5   3    8     75
# 6   3   16    130
3
ответ дан Sven Hohenstein 22 August 2018 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: