将mutate应用于dplyr中的多个列和行

时间:2018-08-16 05:59:24

标签: r dplyr rounding mutate

一个非常简单的问题,但是让我傻眼了。

我有一张桌子,正在尝试使用mutate_all(或另一个dplyr函数)将每一列四舍五入到小数点后两位。我知道这可以通过某些套用功能来完成,但是我喜欢dplyr / tidyverse框架。

DF = data.frame(A = seq(from = 1, to = 2, by = 0.0255),
           B = seq(from = 3, to = 4, by = 0.0255))

Rounded.DF = DF%>%
  mutate_all(funs(round(digits = 2)))

但是,这不起作用,每栏只给我2。有想法吗?

1 个答案:

答案 0 :(得分:3)

在回合函数中需要一个“点”。点是一个占位符,在该处mutate_all应该放置您要操纵的每一列。

Rounded.DF = DF%>%
  mutate_all(funs(round(., digits = 2)))

要使其更加直观,您可以编写与自定义函数完全相同的东西,然后在mutate_all内部引用该函数:

round_2_dgts <- function(x) {round(x, digits = 2)}

Rounded.DF = DF%>%
  mutate_all(funs(round_2_dgts))