summarise_each已弃用 - 新的summarise_at抛出错误

时间:2017-08-21 10:35:26

标签: r dplyr

我正在使用以下代码和数据来总结值:

  bvsubcount.subset %>% 
  group_by(bv.parentbvid) %>%
  summarise_each(funs(sum), c(`2003`:`2005`)) -> bvsubcount.subset

日期示例:

bvsubcount.subset <- setNames(data.frame(c("AT", "DE", "IT"), c("ID1", "ID1", "ID2"),1:3,5:7,3:5), 
c("bv.sub.country.iso", "bv.parentbvid", 2003:2005))

到目前为止,这个工作正常,但是从最近我收到以下警告:

`summarise_each()` is deprecated.
Use `summarise_all()`, `summarise_at()` or `summarise_if()` instead.
To map `funs` over a selection of variables, use `summarise_at()`

但是,如果我使用summarise_at,使用以下代码,我会收到错误错误:

bvsubcount.subset %>% 
  group_by(bv.parentbvid) %>%
  summarise_at(funs(sum), c(`2003`:`2005`)) -> bvsubcount.subset


.vars` must be a character/numeric vector or a `vars()` object, not list

如何使用新的汇总函数来避免警告并仍然使用类似的代码结构?

1 个答案:

答案 0 :(得分:3)

由于error建议.vars必须是变量名称的字符向量,所以你可以尝试这样的事情:

bvsubcount.subset %>% 
+     group_by(bv.parentbvid) %>%
+     summarise_at(.vars = c("2003","2004","2005"),.funs = sum) -> 
bvsubcount.subset

如果您不想明确提及每个数字列名称,请将c("2003","2004","2005")替换为as.character(2003:2005)