首页 > 解决方案 > 如何四舍五入r中预测函数的输出

问题描述

a = today+1; b = today+7
new <- data.frame(t_date = as.Date(a:b ,origin = "2020-01-20"))
predict_date <- as.Date(a:b,origin="2020-01-20")
predict_date = c(as.character.Date(predict_date))  
Final <- cbind(predict_date,predict.lm(fit,new,interval = "confidence"))
knitr::kable(Final,caption = "This is the predictions for the world ")

我得到的输出是这个

我希望输出为整数,有人请帮我解决这个问题!

标签: rroundingdata-conversionpredict

解决方案


要控制输出打印中的位数,请将digits参数设置为kable()

要控制实际数字的精度,用户round().

这是一个可重现的例子。

library(dplyr)
library(knitr)

mdl <- lm(dist ~ speed, data = cars)

explanatory_data <- data.frame(
  speed = seq(0, 100, 10)
)

predictions <- explanatory_data %>% 
  mutate(
    dist = predict(mdl, explanatory_data)
  )

默认情况下,kable()打印与getOption("digits").

predictions %>% 
  kable()

| speed|      dist|
|-----:|---------:|
|     0| -17.57909|
|    10|  21.74499|
|    20|  61.06908|
|    30| 100.39317|
|    40| 139.71726|
|    50| 179.04134|
|    60| 218.36543|
|    70| 257.68952|
|    80| 297.01361|
|    90| 336.33769|
|   100| 375.66178|

digits参数改变它。

predictions %>% 
  kable(digits = 2)

| speed|   dist|
|-----:|------:|
|     0| -17.58|
|    10|  21.74|
|    20|  61.07|
|    30| 100.39|
|    40| 139.72|
|    50| 179.04|
|    60| 218.37|
|    70| 257.69|
|    80| 297.01|
|    90| 336.34|
|   100| 375.66|

这不会改变基础数字。您可以使用更改精度round()(但这通常是一个坏主意,因为任何进一步的计算都会不太准确)。

predictions %>% 
  mutate(rounded_dist = round(dist, 2))

   speed      dist rounded_dist
1      0 -17.57909       -17.58
2     10  21.74499        21.74
3     20  61.06908        61.07
4     30 100.39317       100.39
5     40 139.71726       139.72
6     50 179.04134       179.04
7     60 218.36543       218.37
8     70 257.68952       257.69
9     80 297.01361       297.01
10    90 336.33769       336.34
11   100 375.66178       375.66

推荐阅读