Dplyr - 选择列是否存在并汇总是否存在

Cod*_*ter 4 r dplyr

我可以使用 ' contains' in检查特定列是否存在dplyr。如果表达式的摘要不存在,我很难评估它。

这是我的代码片段:

  df <- Prod%>%
      group_by(Entity)%>%
      select(Entity,`Cum.Oil`,`Cum.Gas`,contains("EUR")%>%
      summarise(Oil = mean(`Cum.Oil`), Gas = mean(`Cum.Gas`), EUR=mean(EUR))
Run Code Online (Sandbox Code Playgroud)

如果 EUR 列不存在,如何忽略汇总表达式中的“EUR”表达式?

Jua*_*n C 5

像这样的东西应该有效:

df <- Prod%>%
      group_by(Entity)%>%
      summarise(across(any_of(c('Cum.Oil', 'Cum.Gas', 'Eur')), ~mean(.x), 
                .names = '{.col %>% str_remove("Cum.")}' )
Run Code Online (Sandbox Code Playgroud)

不过,如果没有一些代表就无法进行测试。

any_of提示:您还可以在 select 语句中使用:

df <- Prod%>%
      group_by(Entity)%>%
      select(any_of(c('Entity', 'Cum.Oil', 'Cum.Gas', "EUR"))
Run Code Online (Sandbox Code Playgroud)