Импорт затраченного времени (ЧЧ: ММ: SS) из Excel в R

#r #excel #time #lubridate

#r #excel #время #lubridate

Вопрос:

Я новичок в R. У меня есть данные в книге Excel, которая включает некоторые переменные, содержащие прошедшее время, сохраненное как ЧЧ: ММ: СС. В настоящее время они импортируются в виде дат и времени в R, поскольку именно так Excel выглядит для хранения базовых данных. Я хочу импортировать эти переменные в 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")
 

Когда я делаю это, столбцы ЧЧ: ММ: СС отображаются следующим образом:

 1899-12-31 00:00:05
 

Ответ №1:

Получил помощь и придумал это решение:

 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)
 

Ответ №2:

Пожалуйста, попробуйте этот подход с xlsx пакетом:

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

При загрузке R вы получите это:

введите описание изображения здесь

Ответ №3:

Есть еще один пакет 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