dplyr在其中使用分组方式时无法正常工作

时间:2019-04-29 01:31:00

标签: r dataframe group-by dplyr

Am计算两种不同预测方法之间的错误率。 我的基本方法是按nk分组并计算误差以进行比较,然后选择误差率值较小的误差。问题在于,MAP1E_arima_dsMAPE_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 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,我认为您正在寻找的是这个

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))