如何将输出 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_at
和 summarize_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))
我很难通过一系列步骤处理(使用 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_at
和 summarize_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))