POSIXct を減算するときに同じ単位で時間差を作る方法 質問する

POSIXct を減算するときに同じ単位で時間差を作る方法 質問する

POSIXct に減算したいです。これはできますが、最初の行に応じて (たぶん) 差は秒単位または分単位になります。以下では、最初の行の時間差を変更したため、最初の差分は秒単位、2 番目の差分は分単位であることがわかります。

#diff in seconds because 1st row time diff is small?
t1<- as.POSIXct(c("2015-02-02 20:18:03 00:00:00", "2015-02-02 20:17:02 00:00:00"),"GMT")
t2<- as.POSIXct(c("2015-02-02 20:18:02 00:00:00","2015-02-02 20:18:02 00:00:00"),"GMT")
d<-data.frame(t1= t1, t2= t2)
d$t1-d$t2


#diff in seconds because 1st row time diff is larger?
t1<- as.POSIXct(c("2015-02-02 20:13:03 00:00:00", "2015-02-02 20:17:02 00:00:00"),"GMT")
t2<- as.POSIXct(c("2015-02-02 20:18:02 00:00:00","2015-02-02 20:18:02 00:00:00"),"GMT")
d<-data.frame(t1= t1, t2= t2)
d$t1-d$t2

結果:

> #diff in seconds because 1st row time diff is small?
> t1<- as.POSIXct(c("2015-02-02 20:18:03 00:00:00", "2015-02-02 20:17:02 00:00:00"),"GMT")
> t2<- as.POSIXct(c("2015-02-02 20:18:02 00:00:00","2015-02-02 20:18:02 00:00:00"),"GMT")
> d<-data.frame(t1= t1, t2= t2)
> d$t1-d$t2
Time differences in secs
[1]   1 -60
> 
> 
> #diff in seconds because 1st row time diff is larger?
> t1<- as.POSIXct(c("2015-02-02 20:13:03 00:00:00", "2015-02-02 20:17:02 00:00:00"),"GMT")
> t2<- as.POSIXct(c("2015-02-02 20:18:02 00:00:00","2015-02-02 20:18:02 00:00:00"),"GMT")
> d<-data.frame(t1= t1, t2= t2)
> d$t1-d$t2
Time differences in mins
[1] -4.983333 -1.000000

最初の行の差が何であっても、常に差を秒単位で表示したいのですが、これを実現する方法はありますか?

ありがとう。

ベストアンサー1

difftime測定単位を指定できるproposeを使用することができます。例えば

difftime(t1, t2, units = "secs")

-別の方法(@nicolaが言及し、同じドキュメントに記載されている)は、メソッドがあり、置換メソッド-.POSIXtを使用して減算操作後に測定単位をオーバーライドするという事実を利用することです。units<-

res <- t1 - t2
units(res) <- "secs"

おすすめ記事