[英]Converting date variable as character to numeric in r
我有一個帶有時間段列的數據框,該時間段另存為字符並采用以下格式:
x
[1] "00:17:31.199" "1 day 01:37:46.22" "00:43:11.51" "01:18:37.721" ...
我想將此列的值轉換為小時(和小時小數點)31 /,以便返回的列為
[1] 0.28 25.61 0.71 1.3 ...
其中0.28是17/60小時,而25.61等於24 + 1 + 37/60。 請注意,所有內容均另存為字符。 我在baseR或lubridate中找不到任何命令可以解決這個問題。 有什么幫助嗎?
因此,我最終基於@ Mako212和@thelatemail進行了以下操作:
days <- gsub("(\\d+)(?=\\sday).*", "\\1", x, perl=TRUE) # extracting the number of days
hours <- gsub(".*(\\S*\\s+\\S+)", "\\1", x, perl=TRUE) # getting rid of days
ind <- grep("(\\d+)(?=\\sday).*", x, perl=TRUE) # getting the indices of elements that have days
然后,我使用as.difftime
來計算以小時為單位的時差。
time.hours <- as.difftime(x, format="%H:%M:%OS", units="hours")
現在,我需要以小時為單位計算在矢量days
中提取的days
,並將其添加到time.hours
。
for (i in ind) {
time.hours[ind] <- as.numeric(days[ind])*24 +
as.difftime(hours[ind], format="%H:%M:%OS", units="hours")
}
請注意,執行上述循環可能會有更有效的方法,但這就是我的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.