首页 文章

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

提问于
浏览
1

通过一系列步骤管道(使用dplyr管道%>%)数据框后,我很难操作输出的tibble输出 . 下面的代码返回2 x 3的tibble输出:

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

这给了我一些服务请求的计数,这些服务请求是否被违反(或者简单地放入,迟到) . 这很好,但我希望能够进一步操纵同样的步骤,而不必将tibble保存为对象 .

为什么?因为这样,我可以在此管道操作之前按公司/帐户,优先级和其他因素过滤我的数据框(sr_df) . 我能够使用if函数进行过滤,但此过滤器不会对新创建的tibble对象产生影响 . 所以我希望做这样的事情:

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

我是R和Coding Noob . 不要退缩 - 我只是想学习;快速学习,正确学习 . 任何答案都表示赞赏 . 谢谢!

我看过这个:R: Further subset a selection using the pipe %>% and placeholder但我不认为我明白了 .

1 回答

  • 1

    在你的caase中,你可以使用 dplyr 函数进一步操作你生成的tibble .

    请注意 mutate_atsummarize_at 的存在,它允许您使用选项转换一组列,以按列位置选择它们 .

    这个,使用 . 作为你正在操作的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))
    

相关问题