#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