我注意到舍入有问题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)
我在 R 环境中重新创建了虚拟变量。
确实当print(spead_data)
,我得到:
day_of_week Bob Jack Simon
<chr> <dbl> <dbl> <dbl>
1 Friday NA NA 0.169
2 Monday NA 0.235 NA
3 Thursday NA NA 0.736
4 Tuesday 0.764 NA NA
5 Wednesday 0.725 NA NA
但是,如果您直接访问值,例如spead_data$Bob
yield :
[1] NA NA NA 0.7635 0.7253
这是您的 4 位数字!他们从未离开,只是tibbles的打印功能有点不同。
我不建议像@saisaran 建议的那样将您的值转换为因子,之后您将无法正确使用它们。
编辑:如果你使用print.data.frame(spead_data)
而不是print(spead_data)
,你会得到你需要的输出:
day_of_week Bob Jack Simon
1 Friday NA NA 0.1693
2 Monday NA 0.2346 NA
3 Thursday NA NA 0.7356
4 Tuesday 0.7635 NA NA
5 Wednesday 0.7253 NA NA
来源:https : //community.rstudio.com/t/why-do-tibbles-and-data-frames-display-decimal-places-a-bit-differently/5722
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句