Преобразование символа во время в R («2019-09-24D00: 00: 03.384309000») - PullRequest
1 голос
/ 25 сентября 2019

Я пытаюсь преобразовать некоторые текстовые данные во время.Я знаю способы преобразования 2019-09-24 00:00:03 в формат времени, но я хочу преобразовать данные более высокой частоты во время.

Некоторые наблюдения выглядят так:

 [1] "2019-09-24D00:00:03.384309000" "2019-09-24D00:00:03.404018000"
 [3] "2019-09-24D00:00:03.408065000" "2019-09-24D00:00:03.552361000"
 [5] "2019-09-24D00:00:03.572690000" "2019-09-24D00:00:03.572690000"
 [7] "2019-09-24D00:00:03.572690000" "2019-09-24D00:00:03.572690000"

Я нашел некоторый код Pythonкоторый может преобразовать эти данные:

data[‘timestamp’] = data.timestamp.map(lambda t: datetime.strptime(t[:-3], “%Y-%m-%dD%H:%M:%S.%f”))

Данные:

data <- c("2019-09-24D00:00:03.384309000", "2019-09-24D00:00:03.404018000", 
"2019-09-24D00:00:03.408065000", "2019-09-24D00:00:03.552361000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.572690000", "2019-09-24D00:00:03.572690000", 
"2019-09-24D00:00:03.614967000", "2019-09-24D00:00:03.656928000", 
"2019-09-24D00:00:03.711825000", "2019-09-24D00:00:03.711825000", 
"2019-09-24D00:00:03.711825000", "2019-09-24D00:00:03.711825000"
)

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Мы можем использовать lubridate для правильного синтаксического анализа

library(lubridate)
out <- ymd_hms(data)
format(head(out), '%OS6')
#[1] "03.384309" "03.404017" "03.408064" "03.552361" "03.572690" "03.572690"

Он анализирует миллисекунды, но метод print formats выводит для приятной печати на экране.Если мы хотим увидеть, есть ли уже миллисекунды,


или с anytime

library(anytime)
anytime(data)
0 голосов
/ 25 сентября 2019

Выезд asPOSIXct().Чтобы выяснить правильные format аргументы, взгляните на ?strptime.

res <- as.POSIXct(data, format="%FD%R:%OS")
head(res, 3)
# [1] "2019-09-24 00:00:03.384309 CEST" "2019-09-24 00:00:03.404017 CEST"
# [3] "2019-09-24 00:00:03.408065 CEST"
class(res)
# [1] "POSIXct" "POSIXt" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...