当我创建一个在节点上使用日期截止的rpart树时,我使用的打印方法(rpart.plot
和fancyRpartPlot
)都以科学计数法打印日期,这使得难以解释结果。这是fancyRpartPlot
:
有没有一种方法可以用更可解释的日期值打印此树?该树图没有意义,因为所有这些日期看起来都是相同的。
这是我创建树和绘制两种方式的代码:
library(rpart) ; library(rpart.plot) ; library(rattle)
my_tree <- rpart(a ~ ., data = dat)
rpart.plot(my_tree)
fancyRpartPlot(my_tree)
使用此数据:
# define a random date/time selection function
generate_days <- function(N, st="2012/01/01", et="2012/12/31") {
st = as.POSIXct(as.Date(st))
et = as.POSIXct(as.Date(et))
dt = as.numeric(difftime(et,st,unit="sec"))
ev = runif(N, 0, dt)
rt = st + ev
rt
}
set.seed(1)
dat <- data.frame(
a = runif(1:100),
b = rpois(100, 5),
c = sample(c("hi","med","lo"), 100, TRUE),
d = generate_days(100)
)
最佳答案
从实际的角度来看,也许您只想从数据开始就使用几天:
dat$d <- dat$d-as.POSIXct(as.Date("2012/01/01"))
my_tree <- rpart(a ~ ., data = dat)
rpart.plot(my_tree,branch=1,extra=101,type=1,nn=TRUE)
这样可以将数量减少到可以管理且有意义的程度(尽管可能不如特定日期有意义)。您甚至可能希望将其四舍五入到最近的日期或星期。 (我无法在计算机上安装GTK +,因此无法使用
fancyRpartPlot
。)