如何将输出 tibble 输送到进一步的计算中而不将 tibble 保存为 R 中的单独 object?

How to pipe an output tibble into further calculations without saving the tibble as a separate object in R?

我很难通过一系列步骤处理(使用 dplyr pipe %>%)数据帧后收到的 tibble 输出。下面的代码 returns 一个 2 x 3 tibble 输出:

sr_df %>% group_by(ResolutionViolated) %>% tally() %>% arrange(desc(n)) %>% mutate(total = sum(n))

这为我提供了违反和未违反(或简单地说,延迟)的服务请求数。这很好,但我希望能够进一步操纵同一个小标题,而不必将小标题另存为 object。

为什么?因为这样,我可以在此管道操作之前通过 company/account、优先级和其他因素过滤我的数据帧 (sr_df)。我可以使用 if 函数进行过滤,但此过滤器不会对新创建的 tibble object 产生影响。所以我想做这样的事情:

sr_df %>% group_by(ResolutionViolated) %>% tally() %>% arrange(desc(n)) %>% mutate(total = sum(n)) %>% round(tibble[1,2]/tibble$total*100, digits = 2)

我是 R 和编码菜鸟。不要退缩-我只是想学习;学得快,学得好。任何答案表示赞赏。谢谢!

我看过这个: 但我不认为我明白了。

在您的情况下,您可以进一步操作使用 dplyr 函数生成的小标题。

请注意 mutate_atsummarize_at 的存在,它们允许您将一组列转换为 select 按列位置排列的选项。

使用 . 作为您当前正在操作的 tibble 的占位符,并在 mutate_at 中调用匿名函数,将为您提供预期的结果。

sr_df %>%
  group_by(ResolutionViolated) %>%
  tally() %>% 
  arrange(desc(n)) %>% 
  mutate(total = sum(n)) %>% 
  mutate_at(.cols = c(1, 2), 
            .funs = function(column) round(column / .$total * 100, digits = 2))