R中不推荐的重组指令,更改为group_by

时间:2015-01-16 12:32:19

标签: r warnings deprecated dplyr

假设这个表:

Browse[2]> tra_all_data
   ID CITY COUNTRY PRODUCT   CATEGORY YEAR INDICATOR COUNT
1   1  VAL      ES  Tomato Vegetables 1999        10    10
2   2  MAD      ES    Beer    Alcohol 1999        20    20
3   3  LON      UK  Whisky    Alcohol 1999        30    30
4   4  VAL      ES  Tomato Vegetables 2000       100   100
5   5  VAL      ES    Beer    Alcohol 2000       121   121
6   6  LON      UK  Whisky    Alcohol 2000       334   334
7   7  MAD      ES  Tomato Vegetables 2000       134   134
8   8  LON      UK  Tomato Vegetables 2000       451   451
17 17  BIL      ES  Pincho       Meat 1999       180   180
18 18  VAL      ES  Orange Vegetables 1999       110   110
19 19  MAD      ES    Wine    Alcohol 1999       120   120
20 20  LON      UK    Wine    Alcohol 1999       230   230
21 21  VAL      ES  Orange Vegetables 2000       100   100
22 22  VAL      ES    Wine    Alcohol 2000       122   122
23 23  LON      UK      JB    Alcohol 2000       133   133
24 24  MAD      ES  Orange Vegetables 2000       113   113
25 25  MAD      ES  Orange Vegetables 2000       113   113
26 26  LON      UK  Orange Vegetables 2000       145   145

这段代码:

CURRENT_COLS<-c("PRODUCT", "YEAR", "CITY")
tra_dAGG <- tra_all_data
    regroup(as.list(CURRENT_COLS)) %>%
    #group_by(PRODUCT, YEAR, CITY) %>%
    summarise(Percent = sum(COUNT)) %>%
    mutate(Percent = Percent / sum(Percent))

如果按原样使用此代码,我会收到以下警告:

Warning message:
'regroup' is deprecated.
Use 'group_by_' instead.
See help("Deprecated")

如果我对regroup行进行注释并使用group_by行,它可以工作,但重点是CURRENT_COLS在每次迭代中都会发生变化,我需要使用这个变量(我在此代码中明确定义了CURRENT_COLS以更好地解释我的问题)< / p>

任何人都可以帮我解决这个问题吗?如何在group_by中使用变量?

提前非常感谢你。

我的R版本:3.1.2(2014-10-31)

1 个答案:

答案 0 :(得分:0)

您需要使用dplyr函数的较新标准评估版本。它们在函数名末尾附加_表示,例如select_()

在您的情况下,您可以将代码更改为:

CURRENT_COLS<-c("PRODUCT", "YEAR", "CITY")
tra_dAGG <- tra_all_data
    group_by_(.dots = CURRENT_COLS) %>%
    summarise(Percent = sum(COUNT)) %>%
    mutate(Percent = Percent / sum(Percent))

确保安装并加载了最新版本的dplyr。

要了解有关dplyr中标准/非标准评估的更多信息,请参阅vignette NSE