将经过的时间 (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)
我是 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)