我想將c("2:25", "-3:45")
轉換爲格式爲"h:m"
的時間向量,並獲取將返回"0:0"
的向量mean(c("2:25", "-2:25"))
的均值。那可能嗎 ?如何將文本轉換爲負時間的時間?
1
A
回答
1
隨着lubridate
您可以輕鬆地創建Duration
類的對象:
library(lubridate)
x <- c("2:25", "-3:45")
l <- lapply(strsplit(x, ":"), as.numeric)
lst <- lapply(l, function(x) {if(x[1] < 0) x[2] <- x[2]-2*x[2];x})
res <- lapply(lst, function(x) duration(as.numeric(x[1]), "hours")+
duration(as.numeric(x[2]), "minutes"))
#[[1]]
#[1] "8700s (~2.42 hours)"
#
#[[2]]
#[1] "-13500s (~-3.75 hours)"
duration(mean(unlist(res)), "seconds")
#[1] "-2400s (~-40 minutes)"
第二個例子:
x2 <- c("2:25", "-2:25")
l <- lapply(strsplit(x2, ":"), as.numeric)
lst <- lapply(l, function(x) {if(x[1] < 0) x[2] <- x[2]-2*x[2];x})
res <- lapply(lst, function(x) duration(as.numeric(x[1]), "hours")+
duration(as.numeric(x[2]), "minutes"))
#[[1]]
#[1] "8700s (~2.42 hours)"
#
#[[2]]
#[1] "-8700s (~-2.42 hours)"
duration(mean(unlist(res)), "seconds")
#[1] "0s"
0
從 「lubridate」, 「時間」 是不是真的有必要。 「difftime」從「基」是不夠好:
x <- c("2:25", "-3:45", "1:11", "-0:03")
A <- abs(matrix(as.numeric(unlist(strsplit(x,":"))),nrow=2))
A[,grep("-",x)] <- -A[,m]
t <- as.difftime(t(A) %*% c(60,1), unit="mins")
結果:
> t
Time differences in mins
[,1]
[1,] 145
[2,] -225
[3,] 71
[4,] -3
> mean(t)
Time difference of -3 mins
矩陣的第一行的「A」包含小時,第二行的分鐘。人們必須暫時忽略「 - 」 - 標誌,因爲它們的有效期爲數小時和 分鐘。隨後,對應於負時間的列完全乘以-1。
如果所需的輸出格式是 「HH:MM」 可以使用 「的sprintf」:
mt <- mean(t)
c <- sprintf("%s%02i:%02.0f",
ifelse(as.numeric(mt)<0,"-","+"),
abs(as.numeric(mt)) %/% 60,
abs(as.numeric(mt)) %% 60)
結果:
> c
[1] "-00:03"
相關問題
- 1. 如何在Oracle中將文本時間轉換爲時間?
- 2. 將負日期時間轉換爲NaT
- 3. 如何將UTC時間轉換爲Java中的本地時間?
- 4. 如何將UTC時間轉換爲本地時間的javascript
- 5. 如何將GMT時間自動轉換爲本地時間(MDT或MST)如何將GMT時間轉換爲XSLT
- 6. 將文本轉換爲日期時間?
- 7. Excel將文本轉換爲時間戳
- 8. Postgresql將文本轉換爲時間戳
- 9. Java:如何將UTC時間戳轉換爲本地時間?
- 10. 如何將UTC日期時間轉換爲本地時間Jquery
- 11. 將時間秒從時間轉換爲本地時間
- 12. PHP將文本時間轉換爲時間格式
- 13. 將時間轉換爲MySQL時間
- 14. 將時間戳轉換爲時間戳
- 15. python將時間轉換爲utc時間?
- 16. 將UTC時間轉換爲IST時間
- 17. PHP將時間轉換爲時間段
- 18. 將時間轉換爲Unix時間戳
- 19. 將時間戳轉換爲時間()
- 20. 將時間戳轉換爲時間
- 21. 將日期時間轉換爲時間
- 22. 如何使用postgresql將時間間隔轉換爲時間戳?
- 23. 轉換作爲文本存儲的負時間
- 24. 如何將負時間戳轉換爲日期(PHP)
- 25. JavaScript:使用時區將UTC時間轉換爲本地時間
- 26. 將時間間隔轉換爲不同語言的文本?
- 27. 如何將SQL Server時間轉換爲SQL中的IST時間?
- 28. 如何將java時間轉換爲Android中的.net時間?
- 29. 如何將(錯誤的)12:00時間轉換爲2400時間?
- 30. 如何將日期時間轉換爲java中的時間戳