假设这个表:
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)
答案 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。