1

如何在 R 中有一个只有时间间隔(无日期)的数据集,如下所示:

TREATMENT_A TREATMENT_B

1:01:12 0:05:00

0:34:56 1:08:09

并计算平均时间等,并在 y 轴上绘制具有时间间隔的箱线图?

我是 R 新手,我搜索了这个,但在网上没有找到示例。

谢谢

4

2 回答 2

2

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()

在此处输入图像描述

于 2012-06-26T18:14:00.100 回答
0

查看“lubridate”包和其中的“hms”功能。

于 2012-06-26T18:07:30.887 回答