我在 R 中有一個物件,我已將其轉換為 POSIXct 物件:
data<- data.frame(date_time= c('2021-06-24 18:37:00', '2021-06-24 19:07:00', '2021-06-24 19:37:00', '2021-06-24 20:07:00','2021-06-24 20:37:00'))
data$date_time<- as.POSIXct(data$date_time, format = "%Y-%m-%d %H:%M:%S")
我想將此列轉換為隨著時間的推移變得更大的小數。例如,'2021-06-24 18:37:00' 應該小于 '2021-06-24 19:07:00' 等等。然而,到目前為止我嘗試過的所有方法都產生了小數,但隨著時間的推移它不會變大。我試過這個:
data$date_time2<- yday(data$date_time) hour(data$date_time)/24 minute(data$date_time)/60
然而,這會產生:
[1] 176.3667 175.9083 176.4083 175.9500 176.4500
我需要數字隨著時間的推移逐漸增加。有什么幫助嗎?
uj5u.com熱心網友回復:
如果您只關心映射到保留順序的數字,xtfrm則將物件映射到保留數字的順序。對于 POSIXct 物件,它只回傳內部數字表示,即自 UNIX Epoch 以來的秒數。
xtfrm(data$date_time)
uj5u.com熱心網友回復:
日期時間物件是一個整數,計算從 1/1/1970 開始的秒數。所以這可以as.integer(data$date_time)創建一個整數值。請注意,日期時間是參考 GMT 時區。
要將日期作為小數,需要使用一些整數數學。最終結果是從 1/1/1970 開始的天數和作為分數的時間。
data<- data.frame(date_time= c('2021-06-24 18:37:00', '2021-06-24 19:07:00', '2021-06-24 19:37:00', '2021-06-24 20:07:00','2021-06-24 20:37:00'))
data$date_time<- as.POSIXct(data$date_time, format = "%Y-%m-%d %H:%M:%S", tz="GMT")
intvalue <- as.integer(data$date_time)
#numbers of seconds, take the MOD with the seconds per day
#divide the result by seconds per day to make the decimal part
decfraction <- intvalue%%(3600*24)/(3600*24)
#perform integer division to get the number of days
days <- intvalue%/%(3600*24)
# or as.integer(as.Date(data$date_time))
#put together for the final answer
dateAsDecimal <- days decfraction
#result
#18802.78 18802.80 18802.82 18802.84 18802.86
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/321378.html
