如何在 R 中有一个只有时间间隔(无日期)的数据集,如下所示:
TREATMENT_A TREATMENT_B
1:01:12 0:05:00
0:34:56 1:08:09
并计算平均时间等,并在 y 轴上绘制具有时间间隔的箱线图?
我是 R 新手,我搜索了这个,但在网上没有找到示例。
谢谢
如何在 R 中有一个只有时间间隔(无日期)的数据集,如下所示:
TREATMENT_A TREATMENT_B
1:01:12 0:05:00
0:34:56 1:08:09
并计算平均时间等,并在 y 轴上绘制具有时间间隔的箱线图?
我是 R 新手,我搜索了这个,但在网上没有找到示例。
谢谢
chron-package 有一个支持算术的 'times' 类。您还可以使用 POSIXct 对象完成所有这些操作,并将日期时间输出格式化为不包含日期。我认为axis.POSIXct
函数有一个format
参数应该让你有时间输出。但是,它似乎没有被正确调度,所以我需要“手动”构建轴。
dft <- data.frame(x= factor( sample(1:2, 100, repl=TRUE)),
y= Sys.time()+rnorm(100)*4000 )
boxplot(y~x, data=dft, yaxt='n')
axis(2, at=seq(from=range(dft$y)[1], to =range(dft$y)[2], by=3000) ,
labels=format.POSIXct(seq(from=range(dft$y)[1], to =range(dft$y)[2], by=3000),
format ="%H:%M:%S") )
确实有一个合适的方法,Axis.POSIXt
(我认为boxplot
应该转向绘图,但它似乎没有识别'y'参数的类):
boxplot(y~x, data=dft, yaxt='n')
Axis(side=2, x=range(dft$y), format ="%H:%M:%S")
关于您对“更简单”的要求,请查看基于 ggplot2 的解决方案,使用上面定义的 dft 数据帧和 POSIXct 时间。(我确实尝试了 chron-times 对象,但收到一条消息说 ggplot 不支持该类):
require(ggplot2); p <- ggplot(dft, aes(x,y))
p + geom_boxplot()
查看“lubridate”包和其中的“hms”功能。