【发布时间】:2018-11-14 14:16:46
【问题描述】:
我注意到spread() 中的舍入存在问题(我假设gather())。我用一些虚拟数据(如下)重新创建了这个问题。发生的情况是,当使用 spread() 与超过 4 个小数位的双精度时,点差的输出只有 3 个小数位。
如果有人能对此有所了解,那将非常有帮助,因为我需要保留小数点后 4 位的准确性。
# Loading packages
library(tidyverse)
# Creating a dummy data set.
dummy_data <- tibble(
day_of_week = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday"),
person = c("Jack", "Bob", "Bob", "Simon", "Simon"),
value = c(0.2346, 0.7635, 0.7253, 0.7356, 0.1693)
)
# Spreading the data.
spread_data = dummy_data %>%
spread(person, value)
【问题讨论】:
-
我无法复制您的问题。当我
print(spead_data)时,看起来你是对的,但当我View(spead_data)时,我看到了传播数据中的所有小数位。 -
精度仍然存在:
spead_data$Simon显示它。我不知道更精确地打印小标题。as.data.frame(spead_data)也显示出更高的精度。 -
有趣。好的,所以我然后使用 DT 包(在闪亮的仪表板中)显示这个,所以也许解决方案就在那里?
print(spread_data)可能会截断外观,但不会截断基础值。我会进一步调查。谢谢@AdamSampson 和@bbolker -
是的。查看有关该问题的其他 stackoverflow 并将位数更改为您需要的位数:stackoverflow.com/questions/31022331/…