使用来自chron包的times函数的非常简单的操作"times(3/24)“将导致:
> times(3/24)
[1] 03:00:00当我在数据帧中使用它时,它不会导致正确的格式。取而代之的是,它将原始数字写成"0.125“。但是,当我将它包含在ifelse()语句中时,它可以工作。
请参见示例:
> X<-seq(1,10,1)
> tdata<-as.data.frame(X)
> tdata$T3AM<-times(3/24)
> tdata$T3AMx<-times(ifelse(tdata$X>0,3/24,3/24))
> tdata
X T3AM T3AMx
1 1 0.125 03:00:00
2 2 0.125 03:00:00
3 3 0.125 03:00:00
4 4 0.125 03:00:00
5 5 0.125 03:00:00
6 6 0.125 03:00:00
7 7 0.125 03:00:00
8 8 0.125 03:00:00
9 9 0.125 03:00:00
10 10 0.125 03:00:00 对此有什么解释吗?
发布于 2018-09-07 21:50:19
问题是chron中的"times"类没有提供rep方法。如果我们添加一个,那么它就可以工作。
library(chron)
rep.times <- function(x, ...) times(rep(as.numeric(x), ...))
# from question:
X <- seq(1,10,1)
tdata <- as.data.frame(X)
tdata$T3AM <- times(3/24)
tdata$T3AMx <- times(ifelse(tdata$X>0,3/24,3/24))给予:
> tdata
X T3AM T3AMx
1 1 03:00:00 03:00:00
2 2 03:00:00 03:00:00
3 3 03:00:00 03:00:00
4 4 03:00:00 03:00:00
5 5 03:00:00 03:00:00
6 6 03:00:00 03:00:00
7 7 03:00:00 03:00:00
8 8 03:00:00 03:00:00
9 9 03:00:00 03:00:00
10 10 03:00:00 03:00:00请注意,Kurt刚刚将rep.times添加到chron2.3-53,它现在应该在CRAN上。
https://stackoverflow.com/questions/52223157
复制相似问题