dplyr не работает должным образом при использовании group by в нем - PullRequest
0 голосов
/ 29 апреля 2019

Я вычисляю коэффициенты ошибок между двумя разными методами прогнозирования.Мой основной подход состоит в том, чтобы получить группу по nk и рассчитать ошибки для сравнения и выбрать ту, которая имеет меньшее значение коэффициента ошибок.Проблема в том, что я получаю MAP1E_arima_ds, а MAPE_cagr_ds - это одно и то же значение, так как функция group_by не работает во время вычисления.

Вот что я пробовал

  group_by(nk) %>%
  mutate(MAP1E_arima_ds=sum(temp2$ABS_arima_error_ds)/nrow(temp2)) %>%
  mutate(MAPE_cagr_ds=sum(temp2$ABS_cagr_error_ds)/nrow(temp2))




So finally expected like


         nk         MAP1E_arima_ds      MAPE_cagr_ds
       1-G0175      value_x                value_y
       1-H0182       value_z               value_a

so that I can compare error rate and choose forecasting method with less error rate.


1 Ответ

1 голос
/ 29 апреля 2019

Если я вас правильно понимаю, я думаю, что вы ищете это

library(dplyr)

df %>%
  group_by(nk) %>%
  summarise(MAP1E_arima_ds=sum(ABS_arima_error_ds)/n(), 
            MAPE_cagr_ds=sum(ABS_cagr_error_ds)/n())

# A tibble: 2 x 3
#    nk      MAP1E_arima_ds MAPE_cagr_ds
#  <chr>            <dbl>        <dbl>
#1 1-G0175          14.7          3.38
#2 1-H0182           2.91         7.40

что на самом деле mean

df %>%
  group_by(nk) %>%
  summarise(MAP1E_arima_ds = mean(ABS_arima_error_ds), 
            MAPE_cagr_ds = mean(ABS_cagr_error_ds))

Более того, после копирования dput кажется, что ваши данные уже сгруппированы по nk, поэтому следующее также даст тот же результат

df %>%
   summarise(MAP1E_arima_ds=mean(ABS_arima_error_ds), 
             MAPE_cagr_ds=mean(ABS_cagr_error_ds))
...