gpt4 book ai didi

r - dplyr 汇总中的有效数字位数

转载 作者:行者123 更新时间:2023-12-02 04:11:05 25 4
gpt4 key购买 nike

我无法从摘要中获取所需的小数位数。这是一个简单的例子:

test2  <- data.frame(c("a","a","b","b"), c(245,246,247,248))
library(dplyr)
colnames(test2) <- c("V1","V2")
group_by(test2,V1) %>% summarise(mean(V2))

数据框是:

  V1  V2
1 a 245
2 a 246
3 b 247
4 b 248

输出为:

 V1     `mean(V2)`
<fctr> <dbl>
1 a 246
2 b 248

我希望它能给我包括小数位在内的平均值(即 245.5 和 247.5)

最佳答案

因为您使用的是 dplyr 工具,所以生成的输出实际上是一个 tibble,默认情况下打印带有 3 个有效数字的数字(请参阅选项 pillar.sigfig )。这与句号后的位数不同。要获得后者,只需将其转换为 data.frame: as.data.frame

请注意,tibble 的有效数字概念有些复杂,并不表示句点后有多少位数字,而是表示给定精确表示所需的最少数字位数的数字(我认为是 99.9%,请参阅 discussion here )。

这意味着打印的位数取决于您的号码的“大小”:

library(tibble)
packageVersion("tibble")
#> [1] '2.1.3'
packageVersion("pillar")
#> [1] '1.4.2'
tab <- tibble(x = c(0.1234, 1.1234, 10.1234, 100.1234, 1000.1234))

options(pillar.sigfig=3)
tab
#> # A tibble: 5 x 1
#> x
#> <dbl>
#> 1 0.123
#> 2 1.12
#> 3 10.1
#> 4 100.
#> 5 1000.

options(pillar.sigfig=4)
tab
#> # A tibble: 5 x 1
#> x
#> <dbl>
#> 1 0.1234
#> 2 1.123
#> 3 10.12
#> 4 100.1
#> 5 1000.

as.data.frame(tab)
#> x
#> 1 0.1234
#> 2 1.1234
#> 3 10.1234
#> 4 100.1234
#> 5 1000.1234

reprex package于2019年8月21日创建(v0.3.0)

关于r - dplyr 汇总中的有效数字位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48350069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com