1

パッケージ 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    

それについての説明はありますか?

4

1 に答える 1

0

問題は、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

rep.timesKurtが CRAN にある chron 2.3-53 に追加したばかりであることに注意してください。

于 2018-09-07T13:50:19.110 に答える