将经过的时间 (HH:MM:SS) 从 excel 导入 R

Importing elapsed time (HH:MM:SS) from excel into R

我是 R 初学者。我在 excel 工作簿中有数据,其中包含一些变量,这些变量包含存储为 HH:MM:SS 的经过时间。它们目前在 R 中作为日期和时间导入,因为这就是 excel 存储基础数据的方式。当我阅读 sheet 时,我想将这些变量作为持续时间(以秒为单位)导入 R。我一直在阅读有关 lubridate 的内容,但无法弄清楚如何告诉 R 将这些列作为持续时间导入。

数据如下所示:

var1   var2   var3   time1     time2
blue   yes    5      00:00:05  00:00:09
red    no     7      00:04:02  00:05:04
blue   no     9      00:01:06  00:02:05

导入的时间看起来像

1899-12-31 00:00:05

我已经阅读了很多线程和网页,但我似乎无法找到一个我认为与我的问题相关的示例。可能有一种非常简单的方法可以做到这一点,但我忽略了。非常感谢任何帮助。

编辑: 应该说明我正在使用 readxl 并得到这个问题。

library(readxl)
df <- read_excel("data.xlsx", sheet = "sheet1")

当我这样做时,HH:MM:SS 列显示如下:

1899-12-31 00:00:05

请使用 xlsx 包尝试此方法:

library(xlsx)
#Code
data <- read.xlsx('Myfile.xlsx','Sheet1',colClasses = 'character')

加载到 R 时,您将得到:

还有一个包裹openxlsx

library("openxlsx")
    
df <- read.xlsx('my_file.xlsx', sheet = 1, startRow = 1, colNames = TRUE) 
df
  var1 var2 var3    time1    time2
1 blue  yes    5 00:00:05 00:00:09
2  red   no    7 00:04:02 00:05:04
3 blue   no    9 00:01:06 00:02:05

得到帮助并提出了这个解决方案:

library(tidyverse)
library(readxl)
library(lubridate)

data.df <- read_excel("data.xlsx", sheet = "sheet1")

# Create new var and format to H:M:S (remove date)
data.df$newvar=format(data.df$time1,format="%H:%M:%S")

# Convert time to minutes and seconds with hms
data.df$newvar <- lubridate::hms(data.df$newvar)

# Convert to total seconds
data.df$newvar <- period_to_seconds(data.df$newvar)