【发布时间】:2019-11-21 02:08:17
【问题描述】:
我想知道是否有任何简单的方法可以指定summarise 在dplyr 中报告的位数,最好使用本机dplyr 或其他tidyverse 函数?
这里有一些玩具数据
library(dplyr)
df <- data.frame(group = rep(letters[1:2], each = 10, length.out = 40),
large = rnorm(40, 100, 15),
small = rnorm(40, 0.5, 0.02))
如果我们再通过
进行总结df %>% group_by(group) %>% summarise(mL = mean(large), mS = mean(small))
我们得到
# group mL mS
# <fct> <dbl> <dbl>
# 1 a 104. 0.496
# 2 b 97.6 0.506
请注意,在未指定任何舍入的情况下,平均值较高的变量已舍入到小数点后 1 位,平均值较小的变量已舍入到 3。
现在,如果我们希望将具有较大均值的变量也报告到小数点后 3 位?如果我们包含一个像这样舍入的命令
df %>% group_by(group) %>% summarise(mL = round(mean(large),3), mS = mean(small))
输出没有变化
# group mL mS
# <fct> <dbl> <dbl>
# 1 a 104. 0.496
# 2 b 97.6 0.506
只有使用format()函数才能得到我们想要的东西
df %>% group_by(group) %>% summarise(mL = format(round(mean(large),3),3), mS = mean(small))
group mL mS
<fct> <chr> <dbl>
1 a 103.888 0.496
2 b 97.626 0.506
有更简单的方法吗?最好使用某种 tidyverse 函数。
【问题讨论】: