簡體   English   中英

在R中將日期變量作為字符轉換為數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM